4.4 · Macros y programación VBA

Nivel 4 · Experto: Power Query, modelo de datos y VBA

4.4Macros y programación VBA

Objetivo: Automatizar una tarea repetitiva con una macro y comprender las bases (y riesgos) de VBA.
Tiempo estimado: 14 min · lectura autónoma · Si solo tienes 5 min: lee «Lo esencial en 30s» + el esquema.

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).

Error frecuente de interpretación: «Las macros se cancelan con Ctrl+Z, se pueden activar desde cualquier sitio, y VBA sustituye a Power Query en todo». No en los tres puntos. Una macro modifica el libro sin posibilidad de cancelación — de ahí la prueba sobre copia. Una macro de origen desconocido puede ser maliciosa — de ahí la activación con conocimiento de causa, solo orígenes fiables. Y para transformar datos, Power Query (sin código, actualizable) supera a VBA; VBA brilla en los gestos de interfaz variados.
De la macro al código Grabar los gestos, leer el VBA producido, adaptarlo y luego reproducirlo Grabar Los gestosdel lunesCódigo VBA GeneradosoloReleer / adaptar Rangosy formatosReproducir Con unclic (.xlsm)
Grabar los gestos, leer el VBA producido, adaptarlo y luego reproducirlo
Versión en texto del esquema (SEO / lectores de pantalla / traducción): 1) Wassim graba su formato semanal mediante Desarrollador ▸ Grabar macro. 2) Abre el código con Alt+F11 y localiza las líneas de negrita, de formato y de filtro. 3) Adapta un rango y un color, guarda en .xlsm y reproduce sobre una copia para verificar. 4) El lunes siguiente, un clic reproduce todo idéntico. Lección: grabar gestos, leer el VBA, adaptar con prudencia, reproducir — nunca sin copia de prueba ni sin origen fiable.

🔎 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

  1. Activa la pestaña Desarrollador y luego Grabar macro.
  2. Realiza un formato sencillo y detén la grabación.
  3. Abre el código (Alt+F11) y localiza las líneas correspondientes.
  4. Cambia un valor (ej. color), guarda en .xlsm y reproduce sobre una copia.
Automatizas una tarea repetitiva y sabes leer/adaptar el código generado, con prudencia.

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.

Prudencia: Las macros se activan con conocimiento de causa y únicamente desde orígenes fiables: un libro manipulado puede ejecutar código malicioso. Guarda en .xlsm (si no, las macros se pierden) y prueba siempre sobre una copia, porque una macro no se cancela con Ctrl+Z.

✓ 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.

Lista de salida de la sección
  • 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).
Autoevaluación 1-5: ¿sabría adaptar una línea de VBA sin ayuda?¿he probado mi última macro sobre una copia antes de difundirla?

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.

Comprueba tu comprensión

¿Qué precaución es propia de las macros?

Recursos adicionales (opcional, para ir más allá)

Examen del nivel 4Preguntas inéditas y más difíciles para validar tus conocimientos