4.4Macros y programación VBA
Lo esencial en 30 segundos
- Grabar y luego releer: una macro memoriza una secuencia de acciones en VBA — se reproduce con un clic el informe semanal con el formato idéntico.
- Leer el editor (Alt+F11) para progresar: cambiar un rango, un valor, un color en el código generado — macros cortas y específicas, probadas sobre una copia.
- Reflejo de Wassim: una macro no se cancela (Ctrl+Z inoperante) y puede ser maliciosa — libro en .xlsm, solo orígenes fiables.
Mini-caso hilado — Wassim reproduce el formato del lunes con un clic
Wassim, contable en Argel, da formato al mismo informe cada lunes (paneles inmovilizados, encabezados en negrita, importes en dinares, filtro automático). Graba una macro «MiseEnFormeRapport», abre el código con Alt+F11, localiza las líneas y ajusta el rango. Guardado en .xlsm, un clic reproduce todo — probado primero sobre una copia, porque una macro no se cancela. Cuarto hito del hilo conductor: lo repetitivo de la interfaz queda automatizado, con prudencia.
Continuación de los casos 4.1-4.3 — Wassim automatiza lo que ni Power Query ni las fórmulas hacen: los gestos de interfaz.
1. Grabar una macro
Una macro memoriza una secuencia de acciones para reproducirlas. Desarrollador ▸ Grabar macro: se realizan los gestos (dar formato, filtrar, pegar…), se detiene la grabación. Excel genera código VBA. Reproducir la macro replica todo al instante — ideal para el informe semanal de Wassim, con el formato idéntico.
Se conservan macros cortas y específicas: una tarea = una macro. Los monstruos que lo hacen todo son ilegibles y se rompen al primer cambio de estructura.
2. Leer y adaptar el VBA
El código se abre en el editor de VBA (Alt+F11). Aunque no seas desarrollador, puedes leerlo y adaptarlo: cambiar un valor, un rango, un color. Es la mejor forma de aprender: grabar y luego comprender el código producido — Wassim localiza enseguida las líneas de negrita y de formato monetario.
VBA manipula objetos (libro, hoja, rango) con propiedades y métodos: Worksheets, Range, Font.Bold, NumberFormat… Comprender este vocabulario basta para adaptar el 80 % de las macros grabadas.
3. Precauciones
Un libro con macros se guarda en .xlsm — en .xlsx, las macros se pierden. Las macros pueden ser un vector de virus: activa solo las de orígenes fiables, con conocimiento de causa. Otra limitación: una macro no «se cancela» (Ctrl+Z no deshace sus acciones) — se prueba sobre una copia.
Por último, para una simple transformación de datos, Power Query suele ser preferible a VBA: sin código, actualizable, más seguro. VBA sigue siendo pertinente para automatizar acciones de interfaz variadas (formato, cuadros de diálogo, interacciones entre hojas).
🔎 Ejemplo concreto — 🔎 Ejemplo concreto — Automatizar un formato semanal
Cada lunes, Wassim da formato al mismo informe; el grabador produce este VBA:
Sub MiseEnFormeRapport()
' Inmovilizar paneles + encabezados en negrita (Wassim: informe semanal)
Range("A2").Select
ActiveWindow.FreezePanes = True
Rows("1:1").Font.Bold = True
' Importes en dinares + filtro automático
Columns("C:C").NumberFormat = "#,##0 DZD"
Range("A1").AutoFilter
End Sub
Lectura: el grabador transforma clics en código reutilizable y legible.
Lección: se automatiza lo repetitivo Y reproducible; se prueba sobre una copia (sin cancelación).
Vocabulario de la sección
- Macro
- Secuencia de acciones grabada para reproducirla con un clic.
Ejemplo sencillo: La MiseEnFormeRapport de Wassim reproduce su formato del lunes.
Lo que no es: una fórmula que se recalcula sola.
Reflejo: gesto semanal idéntico: grabarlo en macro.
- VBA
- Visual Basic for Applications: el lenguaje de las macros de Excel (objetos, propiedades, métodos).
Ejemplo sencillo: Wassim lee Range y Font.Bold en su código grabado.
Lo que no es: el lenguaje M de Power Query (preparación de datos).
Reflejo: adaptar una macro: localizar objetos y propiedades.
- .xlsm
- Formato de libro que admite macros; .xlsx las pierde.
Ejemplo sencillo: Wassim guarda su informe automatizado en .xlsm.
Lo que no es: un libro .xlsx que conservara las macros.
Reflejo: macro creada: guardar de inmediato en .xlsm.
- Seguridad de las macros
- Las macros pueden ser maliciosas: activar con conocimiento de causa, orígenes fiables.
Ejemplo sencillo: Wassim solo activa sus propias macros y las validadas del despacho.
Lo que no es: un código inofensivo por naturaleza, activable sin pensar.
Reflejo: macro recibida: verificar el origen antes de activar.
En la práctica — En práctica — Grabar y releer una macro
- Activa la pestaña Desarrollador y luego Grabar macro.
- Realiza un formato sencillo y detén la grabación.
- Abre el código (Alt+F11) y localiza las líneas correspondientes.
- Cambia un valor (ej. color), guarda en .xlsm y reproduce sobre una copia.
Guion listo para decir — anunciar la macro al equipo (30 s)
«Soy Wassim: el formato del informe del lunes está grabado en una macro — un clic reproduce todo: paneles, negrita, formato dinares, filtro. El libro está en .xlsm, la probé sobre una copia porque una macro no se cancela. Activa solo nuestras macros validadas.»
Decirlo antes de difundir el archivo: recuerda el .xlsm y el origen fiable.
Plantilla para copiar y pegar — Bucle VBA seguro sobre un rango (con copia de prueba)
Sub NormaliserMontants()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Worksheets("Ventas").Range("C2:C500")
If IsNumeric(c.Value) Then c.Value = Round(c.Value, 2)
Next c
Application.ScreenUpdating = True
MsgBox "Importes normalizados (probado sobre copia)."
End Sub
Formato semanal
Como Wassim: grabar paneles, negrita, formato DZD y filtro — un clic cada lunes.
Adaptar el código
Cambiar el rango C2:C500 o el formato en el editor: la macro sigue la nueva estructura.
Macro recibida por correo
Origen desconocido: no activarla — pedir validación, analizar con conocimiento de causa.
Datos que transformar
Preferir Power Query (sin código, actualizable) en lugar de una macro frágil.
✓ Buenas prácticas
- Grabar primero, leer el código después para aprender.
- Macros cortas y específicas.
- Probar sobre una copia (una macro no se cancela).
✗ Errores frecuentes
- Activar macros de orígenes desconocidos (virus).
- Olvidar guardar en .xlsm (macros perdidas).
- Usar VBA donde Power Query haría mejor (transformación de datos).
Puntos clave
- Una macro reproduce una secuencia de acciones; el código es VBA.
- Se graba y luego se lee/adapta en el editor (Alt+F11).
- Libro con macros = .xlsm; macros = riesgo de seguridad.
- Una macro no se cancela: probar sobre una copia.
Reto 48h — aplícalo mañana
Sobre una copia de un informe real: graba tu formato, relee el código con Alt+F11, cambia un valor, guarda en .xlsm y reproduce.
- Sé grabar y reproducir una macro específica.
- Sé leer y adaptar el VBA generado (rango, valor).
- Conozco las precauciones (.xlsm, copia de prueba, orígenes fiables).
Preguntas frecuentes
¿Macro (VBA) o Power Query?
Para transformar/consolidar datos: Power Query (sin código, actualizable, más seguro). Para automatizar acciones de interfaz variadas (formato, cuadros de diálogo, interacciones), VBA sigue siendo pertinente.
¿Hace falta saber programar para usar macros?
No para grabar y reproducir; un poco para adaptar el código. Es precisamente una buena puerta de entrada a la programación: grabar una acción y leer el VBA correspondiente.
¿Qué precaución es propia de las macros?