Un libro macro es un archivo de Excel guardado con la extensión .xlsm que contiene una o varias macros, pequeños programas escritos en VBA (Visual Basic para Applications) que repiten por ti los mismos pasos: dar formato, mover datos, abrir otros libros o enviar un correo. La macro graba lo que haces con el ratón y el teclado y lo convierte en código que se ejecuta con un clic, con un botón o con un atajo. Al terminar este tutorial vas a saber grabar una macro, leer el código que ha escrito la grabadora, escribir una a mano, crear un botón en la hoja y compartir el archivo sin que las macros se pierdan. El editor de VBA y la grabadora están en Excel para Windows y Mac desde hace años; en Excel para la web no se pueden usar macros VBA y se automatiza con Scripts de Office.
Qué es un libro macro y para qué sirve
Un libro normal (.xlsx) solo guarda datos, fórmulas y formatos. Un libro macro (.xlsm) añade a todo eso uno o varios programas hechos con VBA que viven dentro del archivo. La macro nace de una necesidad muy concreta: haces cada semana el mismo informe a mano —pones la fila de totales en negrita, aplicas formato moneda a una columna, copias un rango a otra hoja, mandas el archivo por correo— y al final son veinte clics idénticos. La grabadora de macros convierte esos veinte clics en un guion que Excel puede repetir solo.
La macro se guarda DENTRO del libro, no en un sitio aparte. Si compartes el archivo, la macro viaja con él. Si guardas el libro en formato .xlsx, Excel borra las macros sin avisarte del todo, solo con un mensaje que a veces se pasa por alto. Por eso el libro macro siempre se guarda en .xlsm.
La diferencia entre .xlsx, .xlsm y .xls
| Formato | Qué admite | Desde qué versión |
|---|---|---|
.xlsx |
Datos, fórmulas, formatos, gráficos, tablas dinámicas. No guarda macros. | Excel 2007 |
.xlsm |
Todo lo del .xlsx más macros VBA. |
Excel 2007 |
.xlsb |
Libro binario, más rápido y pequeño para libros grandes; también guarda macros. | Excel 2007 |
.xls |
Formato antiguo, máximo 65.536 filas; también puede llevar macros. | Excel 97-2003 (soporte terminado) |
.csv |
Solo texto con los valores de la hoja activa; pierde fórmulas, formatos y macros. | Todas |
.xlsx tenía macros y lo guardas otra vez como .xlsx, las pierdes.Por qué hace falta la pestaña Programador para crear macros
La pestaña Programador viene oculta porque no la usa todo el mundo. La activas en Archivo > Opciones > Personalizar cinta de opciones y marcas la casilla Programador en la columna derecha. A partir de ahí, en Programador > Código aparecen los botones Grabar macro, Macros y Visual Basic, que son los tres que usarás en este tutorial. Más información sobre la pestaña Programador en la ayuda oficial de Excel.
Dónde se crea una macro y qué objetos toca
Alt+F11 abre el editor de VBA, una ventana aparte con su propio menú y sus propias barras. Ahí no hay cuadrícula de celdas: hay un árbol a la izquierda con los libros y sus hojas, y a la derecha la hoja de código en blanco donde se escribe la macro. Insertar > Módulo crea el módulo donde va el código, y en su interior empiezas con Sub NombreDeLaMacro() y terminas con End Sub.
La macro maneja objetos que ya conoces de Excel: Application es el propio Excel; Workbooks son los libros abiertos; Worksheets son las hojas de un libro; Range("A1") y Cells(2,3) son celdas o grupos de celdas. La diferencia está en cómo se les pide que hagan algo: con un punto y un método. Range("A1").Value = "Hola" escribe "Hola" en A1; Worksheets("Ventas").Activate trae la hoja "Ventas" al frente.
| Objeto | Qué representa | Ejemplo |
|---|---|---|
Application |
El propio Excel | Application.ScreenUpdating = False |
Workbooks("Ventas.xlsx") |
Un libro abierto por su nombre | Workbooks("Ventas.xlsx").Close |
Worksheets("Enero") |
Una hoja por su pestaña | Worksheets("Enero").Delete |
Range("A1:C10") |
Un rango por su dirección | Range("A1:C10").Font.Bold = True |
Cells(2, 3) |
Una celda por fila y columna | Cells(2, 3).Value = 10 |
El editor de VBA: ventanas Proyecto, Propiedades y Código
Al abrir Alt+F11 ves tres ventanas útiles. La ventana Proyecto (arriba a la izquierda) muestra el árbol de libros y, dentro de cada uno, sus hojas y la carpeta Módulos con los archivos de código. La ventana Propiedades (abajo a la izquierda) enseña las propiedades del objeto seleccionado (el nombre de una hoja, por ejemplo). La ventana Código (a la derecha) es donde se escribe la macro. Una cuarta ventana, Inmediato (Ctrl+G en el editor), sirve para probar una línea suelta: escribes ?Range("A1").Value y al pulsar Entrar ves el valor de A1.
Los métodos que más se usan: .Value, .Formula, .Copy y .Paste
| Método | Qué hace | Cuándo se usa |
|---|---|---|
.Value |
Lee o escribe el valor de la celda | Guardar o recuperar lo que hay escrito |
.Formula |
Escribe la fórmula en inglés y con comas | Que la celda calcule algo |
.FormulaLocal |
Escribe la fórmula en español y con punto y coma | Igual, pero local |
.Copy / .Paste |
Copia y pega un rango | Mover datos dentro o entre hojas |
.ClearContents |
Borra el contenido sin tocar el formato | Limpiar antes de un nuevo cálculo |
.NumberFormat |
Cambia el formato de número | Poner "#,##0.00" o "dd/mm/aaaa" |
.Formula y .FormulaR1C1 siempre llevan la fórmula en inglés y con comas aunque tu Excel esté en español. Para escribir en español usa .FormulaLocal.Tu primera macro grabada con la grabadora
Vamos a grabar una macro que da formato al informe de ventas de la hoja "Ventas": pone la fila 11 (la de totales) en negrita, aplica formato moneda a la columna E y deja el cursor en A1. La hoja de partida es esta:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Fecha | Vendedor | Producto | Unidades | Precio |
| 2 | 01/03/2026 | Ana | Cuaderno | 10 | 3,20 |
| 3 | 02/03/2026 | Luis | Bolígrafo | 25 | 1,50 |
| 4 | 03/03/2026 | Ana | Carpeta | 8 | 4,75 |
| 5 | 04/03/2026 | Marta | Cuaderno | 12 | 3,20 |
| 6 | 05/03/2026 | Luis | Carpeta | 6 | 4,75 |
| 7 | 06/03/2026 | Marta | Bolígrafo | 30 | 1,50 |
| 8 | 07/03/2026 | Ana | Cuaderno | 4 | 3,20 |
| 9 | 08/03/2026 | Luis | Carpeta | 9 | 4,75 |
| 10 | 09/03/2026 | Marta | Bolígrafo | 15 | 1,50 |
| 11 | TOTAL | 119 | 227,20 |
Grabar la macro paso a paso
- Abre la pestaña Programador (si no la ves, actívala como se explica arriba).
- Pulsa
Programador > Código > Grabar macro. - En el cuadro Grabar macro escribe el nombre
FormatoVentas, deja Guardar macro en: en "Este libro" y como Método abreviado escribe Ctrl+Mayús+V. Pulsa Aceptar. El cursor se convierte en un pequeño casete: todo lo que hagas a partir de ahora se está grabando. - Selecciona la fila 11 haciendo clic en su número de fila a la izquierda y pulsa Ctrl+N para ponerla en negrita.
- Selecciona el rango
E2:E11, abre Ctrl+1 (Formato de celdas), elige Moneda con dos decimales y pulsa Aceptar. - Haz clic en la celda A1 para dejar el cursor ahí.
- Vuelve a
Programador > Código > Detener grabación(o al botón cuadrado que ha sustituido a Grabar macro).
Ejecutar la macro y revisar el código que generó
La macro ya está guardada en el libro. Puedes ejecutarla de dos maneras.
Ejecutar desde la cinta
- Ve a
Programador > Código > Macros. - Selecciona FormatoVentas en la lista y pulsa Ejecutar.
Ejecutar desde un botón en la hoja
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | [Aplicar formato] |
- Ve a
Insertar > Controles > Botón(en versiones antiguas:Programador > Controles > Insertar > Botón). - Dibuja el rectángulo del botón sobre la celda F1 (más o menos).
- En el cuadro Asignar macro que aparece, elige FormatoVentas y pulsa Aceptar.
- Si quieres, cambia el texto del botón a "Aplicar formato" haciendo clic derecho sobre él.
Ahora abre Alt+F11, haz doble clic en Módulo1 dentro de la carpeta Módulos y verás el código que la grabadora ha escrito. Tiene esta pinta:
Sub FormatoVentas()
Rows("11:11").Select
Selection.Font.Bold = True
Range("E2:E11").Select
Selection.NumberFormat = "#,##0.00"
Range("A1").Select
End Sub
Fíjate en la línea Selection.NumberFormat = "#,##0.00": es la que aplica el formato moneda. La grabadora usa Select y Selection porque imita tus clics, pero se puede reescribir sin ellas (más limpio, más rápido).
Escribir a mano una macro que rellena una hoja
La grabadora sirve para aprender los nombres de los objetos, pero escribir a mano te da control. Vamos a hacer una macro que recorra la hoja "Ventas" y calcule el total de cada fila (columna F), multiplicando unidades por precio. La hoja de partida es la misma del apartado anterior, sin la columna F.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Fecha | Vendedor | Producto | Unidades | Precio | Total |
| 2 | 01/03/2026 | Ana | Cuaderno | 10 | 3,20 | |
| 3 | 02/03/2026 | Luis | Bolígrafo | 25 | 1,50 | |
| 4 | 03/03/2026 | Ana | Carpeta | 8 | 4,75 | |
| 10 | 09/03/2026 | Marta | Bolígrafo | 15 | 1,50 |
Pulsa Alt+F11, abre Módulo1 y debajo del código de la grabadora escribe este otro:
Sub Recorrer()
Dim i As Long
For i = 2 To 10
Cells(i, 6).Value = Cells(i, 4).Value * Cells(i, 5).Value
Next i
End Sub
Para ejecutarlo, vuelve a Excel y pulsa Alt+F8, selecciona Recorrer y pulsa Ejecutar.
El código, línea por línea
Sub Recorrer() y End Sub son obligatorios: encierran la macro y le dan nombre. Dim i As Long declara la variable i como un número entero largo, necesario porque las filas pueden pasar de 32.767. For i = 2 To 10 abre un bucle que va desde la fila 2 hasta la 10. Cells(i, 6).Value = Cells(i, 4).Value * Cells(i, 5).Value escribe en la columna 6 (F) el producto de la columna 4 (D, unidades) por la columna 5 (E, precio). Next i cierra el bucle y vuelve a la siguiente fila. Referencia: objetos básicos de VBA en Excel.
Acelerar la macro cuando hay muchas filas
Recorrer celda a celda con Cells es lento en hojas grandes porque Excel redibuja la pantalla en cada cambio. Se acelera con dos líneas: una al principio que apague la actualización de pantalla, y otra al final que la encienda.
Sub Recorrer()
Dim i As Long
Application.ScreenUpdating = False
For i = 2 To 5000
Cells(i, 6).Value = Cells(i, 4).Value * Cells(i, 5).Value
Next i
Application.ScreenUpdating = True
End Sub
Application.ScreenUpdating = True antes de End Sub. Si la macro falla por un error y no llega a esa línea, Excel puede quedarse con la pantalla congelada hasta el siguiente reinicio.ScreenUpdating = False tarda menos de la mitad que la versión sin esa línea.Guardar y compartir el libro con macros sin perderlas
Una vez grabada la macro, guarda el libro con la extensión correcta.
- Pulsa F12 (Guardar como).
- En Tipo: elige *Libro de Excel habilitado para macros (.xlsm)**.
- Escribe el nombre (por ejemplo
InformeVentas.xlsm) y pulsa Guardar.
Si lo guardas en .xlsx por error, Excel muestra un mensaje amarillo: "Las características siguientes no se pueden guardar en un libro sin macros: macros". Pulsa No, vuelve a Guardar como y elige .xlsm.
El bloqueo de macros al abrir un archivo descargado
Por seguridad, Excel bloquea las macros de los archivos descargados de internet o recibidos por correo. Al abrir el libro ves una barra amarilla con ADVERTENCIA DE SEGURIDAD: Las macros se han deshabilitado y un botón Habilitar contenido. Solo púlsalo si el archivo es de confianza y lo has descargado tú de una fuente segura.
Si el bloqueo no se quita con Habilitar contenido, hay otra vía: clic derecho sobre el archivo en el explorador de Windows > Propiedades > pestaña General > marca la casilla Desbloquear > Aceptar. A partir de ahí Excel ya no avisa. Más detalles en proteger archivos de Office.
Por qué la macro no hace lo que esperabas
Tres tropiezos típicos la primera vez.
El error "Sub o Function no definida" al ejecutar
La macro llama a un nombre que no existe. Causa: escribiste mal el nombre al ejecutarla, o la macro está en un módulo distinto del que esperabas. Arreglo: abre Alt+F8, mira la lista de macros disponibles y comprueba que coincides con el Sub que hay en el módulo. Si la macro no aparece, abre el editor con Alt+F11 y verifica que está dentro de Módulo1, Módulo2 o el que tenga tu proyecto.
La macro se ejecuta pero no cambia nada
La hoja donde corre ya no se llama "Ventas" porque la renombraste, o la macro apunta a una hoja que no es la activa. Arreglo: añade una línea al principio del Sub que asegure la hoja correcta, y selecciónala antes de tocar nada.
Sub Recorrer()
Worksheets("Ventas").Activate
Dim i As Long
For i = 2 To 10
Cells(i, 6).Value = Cells(i, 4).Value * Cells(i, 5).Value
Next i
End Sub
Excel pide guardar como .xlsm aunque el libro ya lo era
La extensión del archivo cambió al abrirlo en una versión antigua que no entiende .xlsm y lo guardó como .xls o .xlsx. Arreglo: vuelve a F12 y guarda otra vez como *Libro de Excel habilitado para macros (.xlsm)**. Si el libro lo abriste en Excel 2003 o anterior, no hay solución directa: esas versiones no reconocen .xlsm.
Lo que tu libro macro no puede hacer
Las macros VBA son muy potentes en el escritorio, pero tienen tres límites que conviene conocer antes de compartir el archivo.
En Excel para la web (excel.cloud.microsoft / OneDrive) no se ejecutan macros VBA. Si subes un .xlsm a OneDrive y lo abres en el navegador, las macros están ahí pero no corren. La alternativa oficial de Microsoft para automatizar en la web son los Scripts de Office, que se programan en TypeScript y se graban desde la pestaña Automatizar.
En Excel para móviles (iPhone, iPad, Android) tampoco se ejecutan macros VBA. El archivo se abre, se ven las hojas y los datos, pero los botones de macro no hacen nada. Para móvil, la opción es reescribir la automatización con Scripts de Office o con Power Automate.
El editor VBA existe en Excel para Mac, pero algunas funciones de la librería de Windows (como Shell para lanzar programas) no están disponibles o tienen otro nombre. Si la macro la va a usar alguien en Mac, hay que probarla ahí antes de dar por bueno el archivo.
Desde qué versión existen las macros y el editor
| Componente | Dónde está |
|---|---|
| Editor de VBA (Alt+F11) | Excel para Windows desde Excel 97; Excel para Mac desde Excel 98 |
| Grabadora de macros | Excel para Windows y Mac, todas las versiones de escritorio |
| Macros VBA en Excel para la web | No disponible |
| Macros VBA en Excel para móviles | No disponible |
| Pestaña Programador | Hay que activarla manualmente en todas las versiones |
Formato .xlsm |
Desde Excel 2007 (soporte terminado) |
Lo que ya sabes hacer con un libro macro
- Crear un archivo
.xlsmdesde Guardar como y entender por qué.xlsxno guarda macros. - Activar la pestaña Programador y grabar una macro con la grabadora, asignándole nombre y atajo.
- Abrir el editor de VBA con Alt+F11, leer el código que ha escrito la grabadora y entender qué hace cada línea.
- Ejecutar la macro desde la cinta Macros, con un atajo de teclado o con un botón dibujado en la hoja.
- Compartir el archivo y desbloquear las macros en Propiedades cuando Excel las bloquea por seguridad.
El siguiente paso natural es escribir una macro que abra otro libro con Workbooks.Open, copie un rango de una hoja a otra con .Copy y .Paste, y cierre el libro de origen. Es el patrón que se usa para consolidar datos de varios archivos en uno solo, y solo necesitas los objetos Workbooks y Worksheets que ya has visto.
Fuentes
- MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 13/10/2026
- MicrosoftProteger hoja y libro — documentación oficialconsultado el 13/10/2026
- MicrosoftLímites del libro — documentación oficialconsultado el 13/10/2026
- MicrosoftFormatos de archivo de Excel — documentación oficialconsultado el 13/10/2026
- MicrosoftAtajos que funcionan igual en cualquier idioma — documentación oficialconsultado el 13/10/2026