Las macros en Excel sirven para que lo que se repite cada mes ocurra con un clic. Grabar una es cuestión de minutos y no exige saber programar; entender lo que la grabadora escribió y limpiarlo es lo que separa una macro que aguanta un año de otra que se rompe la primera vez que alguien cambia de hoja. Esta guía recorre las dos cosas.
Está escrita en dos niveles. Si nunca ha grabado una macro, empiece por la grabadora y por cómo guardar el archivo para que el código no se pierda. Si ya escribe algo de VBA, encontrará la parte técnica: estructura de un procedimiento, recorrer una tabla, la seguridad de macros y cuándo conviene no usar VBA en absoluto.
Dónde encaja esta guía
Es la tercera de siete guías sobre Microsoft 365 construidas sobre el mismo conjunto de datos: un registro de tickets de soporte. En la primera se convirtió en la tabla tblTickets; en la segunda se resumió con tablas dinámicas. Aquí ese trabajo mensual se automatiza.
- Tablas en Excel — preparar y limpiar los datos.
- Tablas dinámicas — resumir esos datos en segundos.
- Macros en Excel — está leyéndola: automatizar lo que se repite.
- Estilos en Word — construir el informe con índice y referencias cruzadas.
- Combinar correspondencia — enviar a cada área su parte.
- Patrón de diapositivas — la plantilla de la presentación.
- Vincular Excel con PowerPoint — que el gráfico siga al dato.
Qué son las macros en Excel
Una macro es una secuencia de instrucciones guardada dentro del libro, escrita en un lenguaje llamado VBA (Visual Basic para Aplicaciones). Cuando se ejecuta, Excel hace exactamente lo que la secuencia dice, en el mismo orden y a la misma velocidad de la máquina.
Las macros de Excel sirven para lo repetitivo y determinista. La prueba para saber si algo merece una macro son tres preguntas: ¿se repite al menos una vez al mes?, ¿los pasos son siempre los mismos?, ¿alguien se equivoca de vez en cuando al hacerlo? Con dos síes, compensa.
Antes de empezar: la pestaña y el formato del archivo
Activar la pestaña Programador
Viene oculta. Vaya a Archivo > Opciones > Personalizar cinta de opciones y marque Programador en la columna de la derecha. Ahí viven la grabadora, el editor de VBA y la seguridad de macros.
Guardar como .xlsm, o las macros de Excel desaparecen
🔴 Esta es la trampa que más tiempo ha costado a más gente. El formato .xlsx no puede contener código. Si guarda un libro con macros en .xlsx, Excel avisa una vez con un cuadro que casi nadie lee, y al aceptar borra todas las macros. No hay deshacer.
| Extensión | Contiene macros | Para qué |
|---|---|---|
.xlsx | No | Libros normales |
.xlsm | Sí | Libros con macros. El que necesita aquí |
.xlsb | Sí | Binario: más rápido y ligero, menos compatible |
.xltm | Sí | Plantilla con macros |
.xlam | Sí | Complemento que se carga en todos los libros |
Seguridad y ubicaciones de confianza
Microsoft bloquea por defecto las macros de archivos descargados de internet, y lo hace con razón: durante años fueron una vía de entrada habitual de programas maliciosos. La forma correcta de trabajar no es bajar la seguridad global, sino declarar una carpeta como ubicación de confianza en Archivo > Opciones > Centro de confianza y guardar allí los libros propios.
⚠️ Si un archivo llega por correo y pide «habilitar contenido», la respuesta por defecto es no. Una macro puede hacer todo lo que puede hacer el usuario que la ejecuta, incluido borrar archivos.
Grabar la primera macro de Excel
- Programador > Grabar macro.
- Póngale un nombre sin espacios, por ejemplo
ActualizarInforme. - Deje «Guardar macro en: Este libro».
- Haga los pasos tal como los haría normalmente.
- Programador > Detener grabación.
- Pruébela con
Alt + F8.
Dos consejos que evitan la mayoría de los fallos. Primero, ensaye los pasos antes de grabar: la grabadora registra también los errores y las correcciones. Segundo, no use el ratón para seleccionar celdas si puede evitarlo; use nombres de tabla, porque el clic graba una coordenada fija que mañana estará en otro sitio.
Leer y limpiar lo que escribió la grabadora
Pulse Alt + F11 para abrir el editor donde viven las macros de Excel. El código estará dentro de Módulos. Lo que la grabadora produce funciona, pero es verboso y frágil, porque describe clics en lugar de intenciones.
' Lo que graba la grabadora
Sheets("Resumen").Select
Range("A1").Select
Selection.Copy
Sheets("Informe").Select
Range("A1").Select
ActiveSheet.Paste
' Lo mismo, sin seleccionar nada
Hoja2.Range("A1").Copy Destination:=Hoja3.Range("A1")
La regla es sencilla: casi nunca hace falta Select ni Activate. Quitarlos hace el código más corto, mucho más rápido y, sobre todo, independiente de qué hoja esté abierta cuando alguien pulse el botón.
La estructura de un procedimiento
Sub ActualizarInforme()
Dim pt As PivotTable
Dim ruta As String
Application.ScreenUpdating = False
' 1. refrescar Power Query y el modelo de datos
ThisWorkbook.RefreshAll
' 2. recalcular cada tabla dinámica de la hoja Resumen
For Each pt In Hoja2.PivotTables
pt.PivotCache.Refresh
Next pt
' 3. exportar el resumen a PDF con la fecha en el nombre
ruta = ThisWorkbook.Path & "\Informe-" & Format(Date, "yyyy-mm") & ".pdf"
Hoja2.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta
Application.ScreenUpdating = True
MsgBox "Informe generado en " & ruta, vbInformation
End Sub
| Elemento | Qué hace |
|---|---|
Sub … End Sub | Delimita el procedimiento |
Dim | Declara una variable y su tipo |
ScreenUpdating = False | Congela la pantalla: multiplica la velocidad |
ThisWorkbook | El libro que contiene el código, pase lo que pase |
Hoja2 | El nombre de código de la hoja, que no cambia si la renombran |
For Each … Next | Repite sobre cada elemento de una colección |
' comentario | Texto que VBA ignora y que el siguiente agradece |
Hay un detalle en esa tabla que ahorra incidentes: usar Hoja2 en vez de Sheets("Resumen"). El primero es el nombre interno y sobrevive a que alguien renombre la pestaña; el segundo se rompe en cuanto alguien escribe «Resumen 2026».
Recorrer una tabla con macros en Excel
Como los datos están en la tabla tblTickets, VBA puede recorrerla por nombre sin saber cuántas filas tiene. Este procedimiento cuenta los tickets críticos y suma sus horas:
Sub ResumenCriticos()
Dim lo As ListObject
Dim fila As ListRow
Dim n As Long, horas As Double
Set lo = Hoja1.ListObjects("tblTickets")
For Each fila In lo.ListRows
If fila.Range(1, lo.ListColumns("Prioridad").Index) = "Crítica" Then
n = n + 1
horas = horas + fila.Range(1, lo.ListColumns("Horas").Index)
End If
Next fila
MsgBox n & " tickets críticos, " & horas & " horas", vbInformation
End Sub
Con nuestro conjunto de datos el resultado es 3 tickets críticos y 13 horas. Fíjese en ListColumns("Horas").Index: la columna se localiza por su nombre, así que insertar una columna nueva en medio no rompe nada. Es la misma idea de las referencias estructuradas, llevada a VBA.
Asignar la macro de Excel a un botón
Que la macro exista no basta: hay que ponerla al alcance de quien la va a usar, que casi nunca sabe qué es Alt + F8.
- Inserte una forma desde Insertar > Formas y escríbale «Actualizar informe».
- Haga clic derecho sobre ella y elija Asignar macro.
- Seleccione
ActualizarInformey acepte.
La alternativa más discreta es añadir la macro a la barra de acceso rápido desde Opciones > Barra de herramientas de acceso rápido > Macros, que la deja disponible en todos los libros abiertos.
Errores frecuentes con macros en Excel
| Error | Causa | Solución |
|---|---|---|
| Las macros desaparecieron | El libro se guardó como .xlsx | Guardar siempre como .xlsm |
| «No se puede ejecutar la macro» | Archivo fuera de una ubicación de confianza | Declarar la carpeta como de confianza |
| Error 1004 al copiar | La macro depende de la hoja activa | Quitar Select y referenciar la hoja |
| Va lentísima | Falta ScreenUpdating = False | Congelar pantalla y cálculo durante el proceso |
| Funciona en un equipo y no en otro | Referencias a rutas locales o a versiones | Usar ThisWorkbook.Path |
| Se rompió al renombrar una hoja | Se usó Sheets("Nombre") | Usar el nombre de código, Hoja2 |
| El botón no hace nada | La macro está en otro libro | Guardar la macro en «Este libro» |
Cuándo no usar macros en Excel
Las macros en Excel se escriben en VBA, una tecnología de los años noventa que Microsoft mantiene por compatibilidad, y no siempre es la mejor respuesta. Tres alternativas cubren hoy buena parte de lo que antes exigía una macro.
| Herramienta | Para qué es mejor | Límite |
|---|---|---|
| Power Query | Transformar y combinar datos de forma repetible | No hace interfaz ni envía correos |
| Office Scripts | Automatizar en Excel para la web, en TypeScript | Exige licencia de empresa y no hay VBA |
| Power Automate | Encadenar aplicaciones: Excel, Outlook, SharePoint | Depende de la nube y de los conectores |
| VBA | Escritorio, control fino de Excel, sin conexión | No funciona en la web ni en el móvil |
La regla práctica: si el trabajo es transformar datos, Power Query antes que VBA. Si hay que saltar entre aplicaciones, Power Automate. VBA sigue ganando cuando todo ocurre dentro de Excel de escritorio y hace falta un control que las otras no dan.
Preguntas frecuentes sobre macros en Excel
¿Hay que saber programar para usar macros en Excel?
Para grabar macros de Excel y ejecutarlas, no. Para que sobrevivan a un cambio de hoja o de columna, conviene entender lo básico: qué es una variable, qué hace un bucle y por qué Select sobra. Es un día de aprendizaje que se amortiza muy rápido.
¿Funcionan en Excel para la web o en el móvil?
No. VBA solo existe en Excel de escritorio para Windows y macOS. En la web el equivalente son Office Scripts, que es otro lenguaje y hay que reescribir.
¿Se puede deshacer lo que hizo una macro?
No. Ejecutar una macro vacía la pila de deshacer. Por eso conviene probarla siempre sobre una copia del archivo, y que el primer paso de cualquier macro destructiva sea guardar una copia.
¿Cómo depuro una macro que falla?
En el editor, pulse F8 para ejecutarla línea a línea y observe cómo cambian los valores. Añada Debug.Print para escribir valores en la ventana Inmediato, que se abre con Ctrl + G. Con esas dos herramientas se resuelve casi todo.
¿Son un riesgo de seguridad?
Las propias, hechas en casa y guardadas en una carpeta de confianza, no. Las que llegan de fuera, sí, y por eso Microsoft las bloquea por defecto. La política sensata en una empresa es permitir macros firmadas o ubicadas en carpetas controladas, y bloquear el resto.
El siguiente paso de la serie
Con los datos limpios, resumidos y el proceso automatizado, el trabajo en Excel está hecho. Lo que falta es contarlo: la cuarta guía arma el informe en Word con estilos, índice automático y referencias cruzadas que no se desfasan.
En KHARONTE administramos Microsoft 365 y los equipos donde se ejecutan estos archivos, con la mesa de servicio detrás para cuando algo deja de funcionar.




