Programar macros en Excel: la guía completa paso a paso

Última actualización: 29 de agosto de 2025
  • 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.

Macros en Excel y cómo programarlas

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.

  8 Claves para Entender: ¿Qué es administrador de archivos?

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.

  Funciones en C con ejemplos: Un Recorrido Completo

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.

  Fórmulas de Excel: ¡La Base de la Productividad!

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.

Las Macros en Excel
Artículo relacionado:
Las Macros en Excel: Cómo automatizar tareas y aumentar tu productividad