- Las macros automatizan acciones repetitivas en Excel, reducen errores y ahorran tiempo.
- Puedes crearlas con la grabadora y mejorarlas con VBA para mayor flexibilidad.
- Usa referencias relativas para adaptarte a distintos rangos y evita pasos redundantes.
- Guarda como .xlsm y gestiona la seguridad para ejecutar macros con confianza.
Si repites tareas en Excel una y otra vez, las macros son tu mejor aliado para dejar de perder tiempo. Con ellas puedes automatizar secuencias completas de acciones (aprende más sobre programación VBA), desde dar formato hasta importar datos o ejecutar cálculos, y dispararlas cuando quieras con un clic o un atajo de teclado.
Al crear una macro, Excel registra tus clics y pulsaciones y los vuelve a ejecutar de forma fiel. Después puedes retocar el código para afinar la ejecución y consultar recursos para Excel. Es habitual empezar con la grabadora y luego ajustar con VBA, consiguiendo más control, flexibilidad y cero errores por despistes.
¿Qué es exactamente una macro en Excel?
Una macro es una lista de instrucciones que Excel ejecuta en el orden definido. Puede ser tan simple como aplicar un estilo de porcentaje o tan compleja como preparar un informe con tablas dinámicas, formatearlo, crear hojas y enviar un correo en Outlook. Las macros se guardan en tu libro y puedes ejecutarlas siempre que lo necesites.
No necesitas saber programar para empezar: la grabadora traduce tus acciones a código VBA. Aun así, conocer algo de VBA te permitirá crear funciones personalizadas, formularios e incluso miniaplicaciones dentro de Excel.
¿Por qué usar macros? Ventajas reales
La gran finalidad de una macro es evitar trabajos repetitivos y minimizar errores. Si cada mes preparas el mismo informe, con una macro te ahorras los pasos mecánicos y te centras en lo importante.
Entre sus beneficios están el ahorro de tiempo, la ejecución consistente (sin olvidos), y la posibilidad de crear atajos y botones para acelerar procesos. Si usas Excel de forma ocasional quizá no te compense; pero si lo usas a diario, notarás la diferencia desde el primer día.
Habilitar la pestaña Programador (Windows y Mac)
La cinta Programador viene oculta por defecto. En Windows, haz clic derecho en la cinta y entra en «Personalizar la cinta de opciones». Marca «Programador» y acepta. Tras esto, verás la pestaña Programador junto a Vista.
En Mac, ve a Excel > Preferencias > Barra de herramientas y cinta de opciones. En «Pestañas principales», marca «Programador» y guarda. Con esto tendrás a mano la grabadora, el acceso a VBA y los controles. Si estás empezando, revisa el manejo básico de Excel para orientarte con la cinta y opciones.
Cómo crear macros con la Grabadora
La grabadora es perfecta para empezar. En Programador > Grabar macro (o Alt+T+M+R en Windows) asigna un nombre descriptivo. Recuerda: el nombre debe empezar por letra, sin espacios ni símbolos.
Elige dónde guardar: «Este libro» servirá en la mayoría de casos. Si quieres tenerla siempre disponible, selecciona «Libro de macros personal» y Excel creará/guardará en Personal.xlsb, que se abre oculto con Excel.
Opcionalmente añade un acceso directo. Para evitar conflictos (por ejemplo, perder Ctrl+Z), se recomienda usar combinaciones con Ctrl+Mayús. También puedes escribir una descripción breve y clara (muy útil cuando tengas muchas macros).
Pulsa Aceptar y realiza las acciones a grabar. Por ejemplo: selecciona A1 y aplica el formato «Porcentaje». Evita clics innecesarios o cambios de selección que no formen parte del proceso objetivo, porque la grabadora registra casi todo.
Al terminar, detén la grabación. Para ejecutarla, ve a Programador > Macros (o Alt+F8), elige tu macro y pulsa Ejecutar. Verás cómo Excel repite los pasos exactamente en el mismo orden.
Ejecutar, editar y administrar tus macros
Desde Programador > Macros (Alt+F8) puedes ejecutar, editar o eliminar macros. Si eliges Editar, se abrirá el Editor de Visual Basic con el código grabado, que puedes limpiar y optimizar (suele incluir pasos redundantes).
Asignar una macro a un botón o forma es muy cómodo: inserta una forma, haz clic derecho > Asignar macro, elige la macro y listo. Al pulsar la forma, se ejecutará al instante.
Para tenerla siempre a mano en la barra de herramientas de acceso rápido, abre el menú de la barra (flecha hacia abajo) > Más comandos > en «Comandos disponibles en», elige «Macros», añade la tuya y cambia el icono si quieres. Ahora tendrás un botón permanente incluso cuando no estés en Programador.
Si necesitas reutilizar la macro en otro libro, puedes copiar el módulo desde el Editor de Visual Basic. Abre VBE (Alt+F11), arrastra el módulo al otro libro abierto o usa Exportar/Importar archivo .bas.
Programar macros en Excel con el Editor de Visual Basic (VBA)
Para ir más allá de la grabadora, abre el Editor con Alt+F11. Inserta un Módulo (Insert > Module) y crea tu primera subrutina. El patrón básico es Sub Nombre() … End Sub.
Por ejemplo, para mostrar un mensaje y escribir un valor en A1 podrías empezar con algo sencillo. Así entiendes la estructura y cómo llamar la macro desde Excel (Alt+F8) o asignarla a un botón, con muy pocas líneas:
Sub Primera_Macro()
Range("A1").Value = "Esto de las macros mola."
MsgBox "Hola, querido amigo."
End Sub
Otro ejemplo rápido para aplicar el estilo de porcentaje a la selección actual. Esta macro replica lo que hiciste con la grabadora, pero escrito directamente:
Sub FormatoPorcentaje()
Selection.Style = "Percent"
End Sub
La combinación ideal es: graba para acelerar y después abre el VBE para limpiar pasos superfluos, añadir variables, condiciones o bucles. Así conviertes una grabación «literal» en una macro robusta y reutilizable.
Referencias absolutas vs relativas
Por defecto, la grabadora crea macros en modo absoluto: siempre actúa sobre las mismas celdas (por ejemplo, B3) sin importar dónde estás al ejecutar. Si en tu proceso los datos cambian de posición, esto puede no ser lo que necesitas.
Con «Usar referencias relativas», la macro trabaja respecto a la celda activa al iniciar la ejecución. Por ejemplo, si al grabar comenzaste en B3 y escribiste «Nombre», «Apellido», etc. moviéndote a la derecha, al ejecutar desde C4, lo escribirá desde C4, D4, E4… de forma relativa.
Un ejemplo típico: poner títulos a una tabla que unas veces empieza en B3 y otras en C5. Con modo absoluto, siempre escribiría en B3. Con modo relativo, se adaptará a la celda de inicio seleccionada.
Errores frecuentes al grabar procesos
Un tropiezo común es grabar un «arrastrar» de fórmulas para, por ejemplo, tres filas, y pensar que funcionará en tablas más largas. La grabadora registrará algo equivalente a «rellena tres celdas hacia abajo», no «hasta el final de la tabla».
La solución es cambiar el enfoque: usa rangos dinámicos (por ejemplo, detectar la última fila), bucles o el método CurrentRegion, o bien ajusta la macro en VBA tras grabarla para que se escale a cualquier tamaño.
Buenas prácticas al grabar
Antes de grabar, realiza el proceso manual un par de veces para pulirlo. Haz grabaciones cortas y específicas en lugar de una enorme; así es más fácil mantenerlas y combinarlas.
Evita clics sobrantes, giros innecesarios por la cinta y selecciones que no aportan. Mantén el nombre y la descripción de la macro claros para que tú o cualquier compañero identifiquéis su propósito al instante.
Ejecutar macros de muchas formas
Además del cuadro Macros (Alt+F8), puedes lanzar macros con una forma, un botón en la barra de acceso rápido o al abrir el libro. Incluso puedes hacer que Excel ejecute la macro desde otras apps de Office, lo que te permite automatizar tareas multiaplicación (por ejemplo, actualizar una tabla y enviar un email por Outlook).
Piensa en atajos de teclado con cuidado: si asignas Ctrl+Z a una macro, perderás la capacidad de Deshacer mientras el libro esté abierto. Por eso se sugiere usar combinaciones con Ctrl+Mayús para evitar conflictos.
Guardar libros con macros
Cuando un archivo tiene VBA, guárdalo como .xlsm para que el código se conserve y pueda ejecutarse. Si guardas en .xlsx, perderás el proyecto de VBA. Si quieres macros globales, usa el Libro de macros personal (Personal.xlsb).
Seguridad y habilitación de macros
Las macros pueden estar bloqueadas según la configuración de seguridad. Revisa el Centro de confianza para habilitarlas de forma selectiva y nunca actives macros de orígenes desconocidos. Conocer tu nivel de seguridad te ayuda a equilibrar protección y productividad.
Asignar macros a botones, formas y controles
Para que un usuario las ejecute sin pensar, asigna una macro a un botón, forma o control. Clic derecho sobre el objeto > Asignar macro > selecciona. También puedes colocar un icono en la cinta o la barra de acceso rápido y vincularlo a la macro.
Si usas formularios o controles ActiveX, puedes asignarles macros o procedimientos de eventos (por ejemplo, al hacer clic). Esto permite interfaces más amigables y procesos guiados.
Ejemplos útiles de macros (VBA)
Estos ejemplos ilustran tareas habituales. Puedes pegarlos en un Módulo (Alt+F11 > Insert > Module) y adaptarlos. Recuerda firmar los libros o ajustar la seguridad si tu organización lo requiere para poder ejecutarlos sin avisos.
Copiar el contenido seleccionado a otra ubicación en la misma hoja: Selection.Copy Destination
Sub CopiarSeleccion()
If TypeName(Selection) = "Range" Then
Selection.Copy Destination:=Selection.Offset(0, 2)
Else
MsgBox "Selecciona un rango de celdas primero."
End If
End Sub
Imprimir la hoja activa: ActiveSheet.PrintOut
Sub ImprimirHojaActual()
ActiveSheet.PrintOut
End Sub
Guardar el archivo como libro habilitado para macros (.xlsm): ActiveWorkbook.SaveAs
Sub GuardarComoXlsm()
Dim ruta As String
ruta = ThisWorkbook.Path & Application.PathSeparator & "LibroConMacros.xlsm"
ActiveWorkbook.SaveAs Filename:=ruta, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
Aplicar formato a un rango (ajusta el rango a tus necesidades): With Range(…)
Sub FormatoRango()
With Range("A1:D10")
.Font.Bold = True
.Interior.Color = RGB(230, 230, 250)
.Borders.LineStyle = xlContinuous
End With
End Sub
Buscar un valor en un rango y mostrar la primera coincidencia: Range(…).Find
Sub BuscarValor()
Dim celda As Range
Dim valor As String
valor = InputBox("¿Qué valor quieres buscar?")
If valor = "" Then Exit Sub
Set celda = Range("A1:D1000").Find(What:=valor, LookIn:=xlValues, LookAt:=xlPart)
If Not celda Is Nothing Then
MsgBox "Encontrado en: " & celda.Address
celda.Select
Else
MsgBox "No se encontró el valor especificado."
End If
End Sub
Caso práctico: dar formato de porcentaje
Grabando: inicia la grabación, ponle nombre, elige dónde guardar, opcionalmente asigna atajo y descripción. Selecciona las celdas y aplica «Porcentaje» desde Inicio. Detén la grabación y ejecútala luego con Alt+F8. Si quieres reproducirlo con código minimalista, usa Selection.Style = «Percent» en VBA.
Consejo: durante la grabación no cambies de celda sin motivo. Esas idas y venidas quedan registradas y pueden ralentizar y ensuciar la macro.
Automatizar tareas largas: mejor macros pequeñas
Si tienes un proceso con muchos pasos, plantéate dividirlo en varias macros más pequeñas y llamarlas en cadena. Esto facilita el mantenimiento, te permite reutilizar bloques y simplifica la depuración.
Por ejemplo, una macro para preparar datos, otra para formatear, otra para generar una hoja de impresión y otra para exportar a PDF o enviar por correo. Podrás llamarlas de una en una o todas a la vez.
Editar y limpiar el código grabado
La grabadora captura «todo»: selecciones, clics y cambios de pestaña. Al abrir el VBE, elimina selecciones innecesarias (Select/Selection) sustituyéndolas por referencias directas (por ejemplo, Range(«A1»).Value = …) y agrupa formatos en bloques With/End With.
Además, añade variables y control de errores básico. Un par de If y comprobaciones simples evitan fallos cuando el rango está vacío o la selección no es la esperada.
Preguntas frecuentes
¿Cómo creo un formulario (UserForm) en Excel? Abre el Editor de Visual Basic (Alt+F11), ve a Insert > UserForm y añade controles (cuadros de texto, botones, etc.). Puedes mostrarlo con una macro:
Sub MostrarFormulario()
UserForm1.Show
End Sub
Desde ahí, asigna procedimientos a los eventos de los controles (por ejemplo, Click de un botón) para que ejecuten la lógica que necesites.
¿Cómo protejo/desprotejo una hoja con macros? Usa estas rutinas cambiando la contraseña a tu gusto. Te permiten activar o quitar la protección con un clic:
Sub ProtegerHoja()
ActiveSheet.Protect Password:="segura", AllowFiltering:=True
End Sub
Sub DesprotegerHoja()
ActiveSheet.Unprotect Password:="segura"
End Sub
¿Cómo elimino una macro? Ve a Programador > Macros, selecciona la macro y pulsa Eliminar. Si deseas borrar todo el código de un módulo, abre el VBE (Alt+F11), localiza el módulo en el proyecto, clic derecho y Remove Module (puedes exportarlo antes por si quieres guardarlo).
Un último apunte práctico: si mensualmente formateas un informe donde los clientes con deuda deben ir en rojo y negrita, graba la secuencia una vez, ajusta el código en VBA para que se aplique al rango correcto (usando detección de última fila o filtros) y guarda la macro en tu libro de macros personal. La próxima vez, bastará un atajo o un botón para aplicar el formato al instante con cero fallos y en segundos.
Tabla de Contenidos
- ¿Qué es exactamente una macro en Excel?
- ¿Por qué usar macros? Ventajas reales
- Habilitar la pestaña Programador (Windows y Mac)
- Cómo crear macros con la Grabadora
- Ejecutar, editar y administrar tus macros
- Programar macros en Excel con el Editor de Visual Basic (VBA)
- Referencias absolutas vs relativas
- Errores frecuentes al grabar procesos
- Buenas prácticas al grabar
- Ejecutar macros de muchas formas
- Guardar libros con macros
- Seguridad y habilitación de macros
- Asignar macros a botones, formas y controles
- Ejemplos útiles de macros (VBA)
- Caso práctico: dar formato de porcentaje
- Automatizar tareas largas: mejor macros pequeñas
- Editar y limpiar el código grabado
- Preguntas frecuentes