Una macro es un conjunto grabado de acciones de Excel que puedes repetir con un clic. VBA (Visual Basic para Aplicaciones) es el lenguaje en el que se escriben esas acciones. No necesitas saber VBA para empezar: Excel puede escribir el código por ti mientras grabas. Esta guía te lleva de cero a una macro que funciona y que entiendes, y luego te enseña a editar el código tú mismo.
¿Qué es una macro y qué es VBA?
Una macro automatiza una tarea repetitiva. Si das formato al mismo informe todos los lunes, una macro puede hacer la secuencia entera en una fracción de segundo.
VBA es el lenguaje de programación que hay detrás de las macros. Cuando grabas una macro, Excel traduce tus clics y pulsaciones a VBA y los guarda en un módulo. Puedes ejecutar ese código tal cual, o abrirlo y cambiarlo. Graba cuando la tarea es una secuencia fija de clics que puedes hacer una vez. Escribe VBA cuando necesitas lógica que Excel no puede grabar: bucles, condiciones (If) o trabajar con muchas hojas.Mostrar la pestaña Programador
Todo lo relacionado con macros está en la pestaña Programador, que está oculta de forma predeterminada.
Windows: Archivo → Opciones → Personalizar cinta de opciones. En la lista de la derecha, bajo Pestañas principales, marca Programador y pulsa Aceptar. Mac: Excel → Preferencias → Cinta y barra de herramientas. En la lista de la derecha, marca Programador y pulsa Guardar.La pestaña Programador aparece ahora en la cinta, con un grupo Código que contiene Grabar macro, Macros y Visual Basic.
Graba tu primera macro (sin código)
- En la pestaña Programador, haz clic en Grabar macro.
- Ponle un nombre sin espacios, por ejemplo FormatoEncabezado. Si quieres, asígnale una tecla de método abreviado.
- Elige dónde guardarla: Este libro para una macro ligada a este archivo.
- Haz clic en Aceptar. La grabación ha empezado, así que a partir de ahora se captura cada acción.
- Haz la tarea una vez, despacio. Por ejemplo: selecciona la fila 1, ponla en negrita y aplícale un relleno gris.
- En la pestaña Programador, haz clic en Detener grabación.
Ejecutar una macro
Programador → Macros (o presiona Alt+F8) abre la lista de macros. Selecciona la tuya y haz clic en Ejecutar. Si le asignaste una tecla de método abreviado al grabarla, esa también la ejecuta.Para una macro que uses constantemente, agrega un botón: Programador → Insertar → Botón (control de formulario), dibújalo en la hoja y asigna la macro cuando te lo pida.
Leer el código grabado
Haz clic en Programador → Visual Basic (o presiona Alt+F11) para abrir el Editor de Visual Basic. En el panel Proyecto de la izquierda, despliega Módulos y haz doble clic en Módulo1. Verás algo así:
Sub FormatoEncabezado()
Rows("1:1").Select
Selection.Font.Bold = True
Selection.Interior.Color = RGB(217, 217, 217)
End Sub
Leerlo línea a línea te enseña VBA más rápido que cualquier tutorial: cada línea es una acción que acabas de hacer. Sub inicia la macro, End Sub la termina y las líneas de en medio son los pasos.
Escribir una macro desde cero
El código grabado siempre actúa sobre lo que esté seleccionado, lo que lo hace frágil. El código escrito nombra su objetivo directamente y es más fiable. En el editor, elige Insertar → Módulo y escribe:
Sub FormatoInforme()
Range("A1:D1").Font.Bold = True
Range("A1:D1").Interior.Color = RGB(217, 217, 217)
Columns("A:D").AutoFit
End Sub
Esto pone el encabezado en negrita, lo rellena de gris y autoajusta las columnas sin seleccionar nada antes. Presiona F5 en el editor para ejecutarlo, o ejecútalo desde la lista de macros en la hoja.
Para agregar lógica que el grabador no puede capturar, usa una condición:
Sub MarcarStockBajo()
Dim r As Long
For r = 2 To 100
If Cells(r, 2).Value < 10 Then
Cells(r, 3).Value = "Reponer"
End If
Next r
End Sub
Esto recorre las filas 2 a 100 y escribe «Reponer» en la columna C allí donde la columna B esté por debajo de 10. Un bucle y un If son las dos cosas que vale la pena aprender primero, porque convierten un grabador en automatización de verdad.
Guardar un libro habilitado para macros
Un archivo .xlsx normal no puede guardar macros. Si guardas sin cambiar el formato, tu código se descarta sin avisar.
Usa Archivo → Guardar como y elige Libro de Excel habilitado para macros (\*.xlsm). La extensión .xlsm es lo que le dice a Excel, y a cualquiera a quien envíes el archivo, que contiene código.
Seguridad de las macros
Como las macros pueden ejecutar código, Excel las bloquea de forma predeterminada en archivos que vienen de fuera de tu equipo. Al abrir un .xlsm descargado aparece una barra amarilla de Advertencia de seguridad con un botón Habilitar contenido.
Habilita macros solo en archivos en los que confíes. Una macro maliciosa puede hacer daño real. En los archivos que creas tú, Excel no te avisará. Para cambiar el valor predeterminado, ve a Archivo → Opciones → Centro de confianza → Configuración del Centro de confianza → Configuración de macros, aunque la opción segura de «Deshabilitar con notificación» es la adecuada para la mayoría.
Errores habituales
- Guardar como .xlsx. La macro desaparece. Usa siempre .xlsm.
- Depender de .Select. El código grabado selecciona cosas y actúa sobre la selección. Reescríbelo para nombrar el rango directamente (Range("A1")) y así funcionará sin importar qué esté seleccionado.
- No poner Option Explicit. Agrega Option Explicit al principio de un módulo y Excel te obliga a declarar las variables, lo que caza errores de escritura antes de que causen fallos silenciosos.
- Grabar una macro que incluya abrir el archivo. La ruta grabada queda fija en el código y se rompe en otro equipo.
Preguntas frecuentes
¿Necesito saber programar para usar macros?
No. El grabador de macros escribe el VBA por ti. Puedes grabar, ejecutar y reutilizar macros sin escribir una sola línea. Leer el código grabado es la forma más fácil de empezar a aprender VBA cuando te apetezca.
¿VBA funciona en Excel para Mac?
Sí. Excel para Mac (Microsoft 365 y 2019 en adelante) incluye el editor de VBA completo y el grabador de macros. Abre el editor con Fn+Opción+F11 si macOS intercepta el Alt+F11 normal. Algunos objetos exclusivos de Windows no están disponibles, pero la automatización del día a día funciona igual.
¿Por qué desapareció mi macro al reabrir el archivo?
Lo guardaste como .xlsx, que no puede contener código. Vuelve a crear la macro y guárdala como Libro de Excel habilitado para macros (.xlsm).
¿Cuál es la diferencia entre una macro y VBA?
Una macro es la tarea automatizada. VBA es el lenguaje en el que está escrita. Toda macro es código VBA; grabar es solo una forma de generar ese código sin teclearlo.
¿Es seguro habilitar las macros?
Las macros que escribes tú son seguras. Las de archivos de otras personas pueden contener código dañino, y por eso Excel las deshabilita hasta que haces clic en Habilitar contenido. Habilita macros solo en archivos de una fuente en la que confíes.
¿Puede una macro ejecutarse automáticamente al abrir el libro?
Sí. Un Sub llamado Workbook_Open colocado en el objeto ThisWorkbook se ejecuta cada vez que se abre el archivo. Úsalo con moderación y nunca en un archivo que otras personas vayan a abrir sin saber que contiene código.