filtro avanzado

Excel avanzado con macros: automatiza tareas con VBA

noviembre 2, 2026 Tuto Excel 12 min read
Excel avanzado con macros: automatiza tareas con VBA

Las macros son procedimientos de VBA que ejecutan tareas repetitivas dentro de Excel. En este tutorial usarás el libro VentasAvanzado.xlsm para automatizar un informe, guardar totales, trabajar con varios libros y presentar controles al usuario. La guía funciona en Excel para Windows con VBA; no necesitas una versión concreta reciente, pero debes guardar el libro en formato .xlsm.

Nota: En este artículo, las fórmulas y llamadas a VBA usan punto y coma. En Excel configurado con punto decimal, el separador de argumentos es la coma. La ayuda oficial de atajos de teclado de Excel está disponible en español.

Qué son las macros y qué problemas resuelven

Una macro graba una secuencia de acciones de Excel y la reproduce cuando la ejecutas. En el libro VentasAvanzado.xlsm, una macro puede tomar las ventas registradas en la hoja Ventas, calcular el total, escribirlo en un resumen y avisar que la actualización terminó.

Esto evita repetir cinco pasos cada día, reduce errores de pulsación y permite concentrarse en revisar los datos. VBA también permite trabajar con varios libros, comprobar si una celda está vacía o pedir una categoría mediante un control.

La macro siguiente anticipa el resultado final del tutorial:

Sub ActualizarInforme()
    Dim total As Double

    total = WorksheetFunction.Sum(ThisWorkbook.Worksheets("Ventas").Range("B2:B5"))
    ThisWorkbook.Worksheets("Resumen").Range("B2").Value = total
    MsgBox "Informe actualizado"
End Sub
Cuidado: una macro no corrige los datos de origen; automatiza el procedimiento que tú has definido.

Dónde preparar Excel para crear macros

Primero crea un libro nuevo y guarda la hoja de ventas con datos. Después abre Archivo > Guardar como, elige Libro de Excel habilitado para macros y escribe VentasAvanzado.xlsm.

VistaMacros

Para mostrar la pestaña Programador:

  1. Abre Archivo > Opciones.
  2. Selecciona Personalizar cinta de opciones.
  3. En la lista de la derecha, marca Programador.
  4. Pulsa Aceptar.
ArchivoOpcionesPersonalizar cinta de opcionesProgramador
Nota: la pestaña Programador está oculta de forma predeterminada. Un archivo .xlsx no conserva macros; para este proyecto debes usar .xlsm.

Las piezas del editor de Visual Basic

El editor de Visual Basic, abre con Alt+F11. A la izquierda aparece el panel Proyectos; dentro se ven los libros y sus componentes, como hojas y módulos. En el centro se escribe el código y en la parte inferior aparece la ventana Inmediato, útil para ejecutar instrucciones de prueba.

Para agregar código:

  1. En Proyecto (VBAProject), selecciona el proyecto del libro.
  2. Pulsa Insertar > Módulo.
  3. Escribe el procedimiento en el módulo.
InsertarMódulo
B2fx1.250,00
A B
1 Producto Importe
2 Cuaderno 1.250,00
3 Bolígrafo 45,50
4 Cuaderno 780,00
5 Goma 12,00
Ventas
Consejo: el panel Inmediato ayuda a comprobar valores, pero no sustituye la hoja de resultados ni las pruebas completas.

La grabadora de macros escribe tu primer VBA

La grabadora es la vía más rápida para conocer la estructura de un Sub. En la hoja Ventas, selecciona Programador > Grabar macro y completa el cuadro con el nombre PrimeraMacro.

ProgramadorGrabar macro
  1. Acepta el cuadro.
  2. Escribe Hola en la celda A1.
  3. En Programador > Detener grabación, pulsa Detener grabación.
  4. Abre el editor con Alt+F11 y examina el módulo generado.

El código tendrá una forma parecida a esta:

Sub PrimeraMacro()
    Range("A1").Select
    ActiveCell.Value = "Hola"
End Sub

Range("A1").Select selecciona la celda; ActiveCell.Value = "Hola" escribe el texto. La acción real quedó grabada, aunque una macro editada puede describir el resultado sin seleccionar primero.

Comprueba: A1 debe mostrar Hola y el módulo debe contener un Sub llamado PrimeraMacro.

Cómo escribir una macro con celdas y mensajes

Vamos a sustituir la grabación por código explícito. En el módulo, crea el procedimiento Saludo:

Sub Saludo()
    Range("A1").Value = "Hola"
    MsgBox "Listo"
End Sub

La primera línea asigna Hola a la celda A1. MsgBox "Listo" abre una ventana con el mensaje y un botón Aceptar. Después de aceptar, la macro termina.

Para ejecutarla:

  1. Coloca el cursor dentro de Sub Saludo().
  2. Pulsa F5.
  3. Acepta el mensaje Listo.

Listo
A1fxHola
A B
1 Hola
2 Cuaderno 1.250,00
3 Bolígrafo 45,50
4 Cuaderno 780,00
5 Goma 12,00
Ventas
Comprueba: antes de cerrar el mensaje, la celda A1 muestra Hola; al aceptarlo, no aparece ningún error.

Las variables guardan datos durante la macro

Una variable almacena un dato mientras la macro se ejecuta. Dim crea la variable y As Double indica queervo un número decimal.

En el módulo, escribe:

Sub CalcularTotal()
    Dim importe As Double
    Dim recargo As Double
    Dim total As Double

    importe = 1250
    recargo = 150
    total = importe + recargo

    MsgBox "Total: " & total
End Sub

El signo & concatena el texto Total: con el valor numérico. Si cambias recargo = 150 por recargo = 200, el mensaje mostrará 1.450.

Total: 1400
Cuidado: en las fórmulas de VBA, el separador decimal sigue la configuración regional. Para escribir 1.250,50 de forma independiente de esa configuración, usa CDbl("1250.50") o Val("1250,50") sobre una cadena.
Comprueba: el mensaje muestra Total: 1400 y, tras cambiar el recargo, Total: 1450.

Trabajar con hojas y rangos sin escribir cada celda

En el libro actual, ThisWorkbook representa VentasAvanzado.xlsm. Worksheets("Ventas") selecciona la hoja Ventas y Range("A2:A5") delimita el rango que se recorrerá.

Sub TotalVentas()
    Dim celda As Range
    Dim total As Double

    For Each celda In ThisWorkbook.Worksheets("Ventas").Range("A2:A5")
        total = total + celda.Offset(0, 1).Value
    Next celda

    ThisWorkbook.Worksheets("Ventas").Range("D1").Value = "Total"
    ThisWorkbook.Worksheets("Ventas").Range("D2").Value = total
    MsgBox "Total registrado: " & Format(total, "#,##0.00")
End Sub

Offset(0, 1) desplaza la referencia una columna a la derecha: desde A2:B5 llega a B2:B5. La suma correcta es 1.250 + 45,50 + 780 + 12 = 2.087,50.

D2fx2087,5
A B C D
1 Producto Importe Total
2 Cuaderno 1.250,00 2.087,50
3 Bolígrafo 45,50
4 Cuaderno 780,00
5 Goma 12,00
Ventas
Comprueba: D1 muestra Total y D2 muestra 2.087,50.

Abrir y guardar otro archivo desde VBA

Supón que el archivo Resumen.xlsx ya existe, con una hoja Resumen y la celda B2 vacía. La macro abre Ventas.xlsx, obtiene su total y lo escribe en el resumen.

Sub CopiarTotal()
    Dim origen As Workbook
    Dim destino As Workbook
    Dim total As Double

    Set origen = Workbooks.Open(ThisWorkbook.Path & "\Ventas.xlsx")
    Set destino = Workbooks.Open(ThisWorkbook.Path & "\Resumen.xlsx")

    total = WorksheetFunction.Sum(origen.Worksheets("Ventas").Range("B2:B5"))
    destino.Worksheets("Resumen").Range("B2").Value = total

    destino.Save
    origen.Close SaveChanges:=False
    destino.Close SaveChanges:=True

    MsgBox "Total copiado: " & total
End Sub

origen y destino son objetos Workbook. Set es necesario para asignar objetos a variables. ThisWorkbook.Path obtiene la carpeta del libro habilitado para macros.

Total copiado: 2087,5
Comprueba: Resumen.xlsx queda guardado con B2 en 2.087,50 y ambos archivos se cierran.
Cuidado: la macro no crea Ventas.xlsx ni Resumen.xlsx. Si falta cualquiera, VBA mostrará un error de archivo no encontrado.

Crear mensajes y controles para elegir datos

Un MsgBox puede informar y, según sus argumentos, ofrecer botones como Sí, No, Cancelar o Reintentar. Sirve para pedir una decisión sencilla sin diseñar un formulario.

Para recibir una categoría, un control desplegable como ComboBox puede vincularse a una celda o alimentar un argumento. El código siguiente lee la categoría elegida en G2:

Sub ProcesarCategoria()
    Dim categoria As String

    categoria = ThisWorkbook.Worksheets("Resumen").Range("G2").Value

    If categoria = "" Then
        MsgBox "Elige una categoría", vbExclamation, "Falta información"
        Exit Sub
    End If

    MsgBox "Procesando: " & categoria, vbInformation, "Categoría"
End Sub

En el editor de Visual Basic puedes insertar un control desde el Cuadro de herramientas y asignar su evento Change o un botón a un procedimiento. En la hoja, el usuario elige Papelería y la macro confirma esa selección.

Procesando: Papelería
Comprueba: G2 contiene Papelería, el mensaje muestra Procesando: Papelería y al cancelar el proceso no se escribe ningún resultado.

Detener una macro cuando aparece un error

Una macro puede fallar si intenta operar con una celda vacía. La siguiente versión usa If para comprobar el dato antes de convertirlo en número:

Sub TotalSeguro()
    Dim celda As Range
    Dim total As Double

    On Error GoTo ControlError

    For Each celda In ThisWorkbook.Worksheets("Ventas").Range("B2:B5")
        If IsEmpty(celda.Value) Or Not IsNumeric(celda.Value) Then
            MsgBox "Hay un dato no numérico", vbExclamation, "Revisar ventas"
            Exit Sub
        End If
        total = total + CDbl(celda.Value)
    Next celda

    ThisWorkbook.Worksheets("Ventas").Range("D2").Value = total
    MsgBox "Total correcto: " & total
    Exit Sub

ControlError:
    MsgBox "No se pudo completar el total", vbCritical, "Error controlado"
End Sub

Sin la comprobación, Excel mostraría una alerta inesperada al ejecutar CDbl sobre una celda vacía. On Error GoTo ControlError permite interceptar el fallo y mostrar un mensaje propio.

Total correcto: 2087,5
Comprueba: con los cuatro importes numéricos, D2 muestra 2.087,50; si una celda queda vacía, aparece Hay un dato no numérico y la macro termina sin escribir un total incorrecto.

Por qué una macro no aparece o no se ejecuta

Revisa estos puntos:

  • La pestaña Programador no está visible. Actívala en Archivo > Opciones > Personalizar cinta de opciones. La grabadora también puede abrirse desde Vista > Macros.
  • El archivo es .xlsx. Un libro normal no conserva macros; guárdalo como Libro de Excel habilitado para macros (.xlsm).
  • La macro descargada está bloqueada. Los archivos recibidos de internet pueden permanecer bloqueados hasta que los habilites en Archivo > Propiedades después de revisar su origen.
  • El código no está dentro de un Sub ejecutable. Debe tener una estructura como Sub Nombre() y terminar con End Sub.
  • Falta una referencia o una instrucción. Revisa las opciones del compilador en el editor y vuelve a ejecutar con Alt+F8 para elegir la macro.
  • El código intenta modificar un libro protegido o solo de lectura. Cierra esos archivos o quita la protección antes de automatizar cambios.

Para comprobar una macro, abre el cuadro con Alt+F8, selecciona su nombre y pulsa Ejecutar. Si aparece en la lista pero falla al ejecutarse, el problema está en el código o en los datos, no en la disponibilidad de la pestaña.

Cuidado: no actives el contenido de una macro de origen desconocido solo para eliminar una alerta. Revisa primero el archivo y el código.

Cuándo usar VBA y cuándo evitar las macros

La herramienta depende de si necesitas cálculo, análisis o una secuencia automatizada. Una fórmula se Actualiza con los datos; una macro ejecuta acciones y puede organizar el proceso completo.

Necesidad Herramienta recomendada Ventaja Consideración
Calcular un total por celda Fórmula Simple y visible en la barra de fórmulas Debe copiarse o requiere una tabla
Consultar y analizar registros Tabla de Excel Filtros, formato y referencias estructuradas No abre ni guarda archivos por sí sola
Recopilar, actualizar y preparar archivos Macro VBA Repite el proceso completo Requiere un libro .xlsm y pruebas
Pedir datos mediante un formulario Macro con controles Presenta opciones al usuario Añade mantenimiento al código

En VentasAvanzado.xlsm, una fórmula basta para sumar B2:B5. La macro resulta útil cuando además debes abrir Ventas.xlsx, escribir el resultado en Resumen.xlsx, cerrar ambos y avisar al usuario.

Nota: Excel para la web no ejecuta macros VBA; allí se usan Scripts de Office. Un archivo .xlsx tampoco conserva macros, y Excel para Mac usa Cmd donde Windows usa Ctrl en muchos atajos.
Cuidado: si el proceso depende exclusivamente de cálculos sobre datos, empieza con fórmulas o tablas. Reserva VBA para la automatización que aporta claridad y reduce trabajo repetitivo.

Claves para trabajar con macros en Excel

  • Guarda el libro como .xlsm antes de crear una macro.
  • Activa Programador desde Archivo > Opciones > Personalizar cinta de opciones.
  • Usa Alt+F11 para abrir el editor y F5 para ejecutar el procedimiento activo.
  • Identifica el libro con ThisWorkbook, la hoja con Worksheets("Ventas") y el rango con Range("A2:A5").
  • Comprueba los datos antes de convertirlos con IsEmpty e IsNumeric.
  • Cierra los libros abiertos y guarda solo los cambios necesarios.
  • Prueba las macros con libros y datos de trabajo antes de usarlas en el proceso definitivo.
  • Consulta la documentación oficial de VBA en Office y los formatos de archivo compatibles con Excel.

El siguiente paso es tomar tu proceso repetitivo, escribir sus pasos en una hoja y convertir esa secuencia en tu primera macro ejecutable.

Dudas al aprender macros y VBA en Excel

1. ¿Qué se aprende en un curso de Excel avanzado con macros?

Se aprende a automatizar tareas repetitivas mediante VBA, trabajar con celdas, hojas y libros, mostrar mensajes y gestionar errores. En la práctica, el curso puede usar un informe de ventas para crear una macro que actualice totales y prepare un resumen.

2. ¿Qué distingue un curso de Excel avanzado de uno intermedio?

El nivel intermedio se concentra en fórmulas, tablas y análisis de datos. El avanzado incorpora el editor de Visual Basic, macros, variables, controles y apertura de otros libros para resolver procesos que no conviene repetir manualmente.

3. ¿Necesito conocimientos de programación para aprender macros de Excel?

No es imprescindible conocer programación. La grabadora de macros permite crear un primer procedimiento observando sus acciones; después, el editor de Visual Basic sirve para entender y modificar el código generado.

4. ¿Puedo pasar de un curso de Excel intermedio a uno avanzado?

Sí, conviene dominar antes las fórmulas, el uso de rangos, las tablas y las operaciones básicas de una hoja. Ese conocimiento facilita comprender qué celdas, libros y rangos está manipulando cada línea de VBA.

5. ¿Qué significa UPS en un curso de Excel?

UPS puede referirse a un proveedor o centro de formación, pero la abreviatura no identifica por sí sola un curso concreto. Para saber si ofrece formación avanzada en macros, revisa su temario, el tipo de entrega, las versiones de Excel y si incluye prácticas con VBA.

6. ¿Qué universidades ofrecen cursos de Excel?

La disponibilidad depende de la universidad, su calendario y su oferta de formación continua. Consulta el portal institucional o la dirección de educación continua y verifica que el programa incluya Excel avanzado, VBA y ejercicios prácticos.

7. ¿Qué distingue un diplomado de Excel de un curso?

Un curso se centra en una formación concreta y puede dure menos. Un diplomado suele organizar varias áreas, módulos y criterios de evaluación; por eso hay que comparar contenidos, horas, modalidad y requisitos antes de elegirlo.

8. ¿Cómo se comprueba que un curso de Excel está certificado?

Comprueba quién imparte el programa, qué título recibe el participante, cuáles son los requisitos y cómo se documenta la finalización. También verifica que la práctica incluya macros, el editor de Visual Basic y un proyecto aplicado a tu trabajo.

Fuentes

  1. MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 27/10/2026
  2. MicrosoftAtajos que funcionan igual en cualquier idioma — documentación oficialconsultado el 27/10/2026
  3. MicrosoftFormatos de archivo de Excel — documentación oficialconsultado el 27/10/2026