CSV

VBA en Excel 2007: tu primera macro explicada

noviembre 8, 2026 Tuto Excel 11 min read
VBA en Excel 2007: tu primera macro explicada

VBA es el lenguaje con el que puedes pedirle a Excel que realice tareas repetitivas. En este tutorial crearás un libro de inventario, grabarás una macro, revisarás el código generado y calcularás los totales de varios productos sin escribir una fórmula en cada celda.

El procedimiento funciona en Excel 2007 para Windows, aunque su soporte técnico terminó en octubre de 2017. El grabador de macros y el editor de VBA siguen siendo la vía más clara para pasar de una acción manual a una automatización que puedas revisar y modificar.

Qué es VBA y qué puede automatizar en Excel

VBA significa Visual Basic for Applications. En Excel, permite convertir una secuencia de acciones en código: escribir textos, modificar formatos, recorrer una tabla o mostrar mensajes al terminar una tarea.

Piensa en la hoja Inventario de una tienda. Contiene productos, existencias y precio. Al incorporarse un producto nuevo, alguien debe escribir su valor total. Una macro puede recorrer las filas y calcular D2:D6 automáticamente.

Para observar el proceso, primero usaremos el grabador de macros. Este registra acciones como escribir «Hola» en A1 y genera código equivalente. No sustituye a una buena revisión: sirve para obtener un ejemplo que puedas leer y adaptar.

En lugar de imaginative una automatización completa desde cero, grabaremos una acción sencilla y después analizaremos sus componentes. La referencia oficial de Microsoft describe VBA como una herramienta para automatizar tareas repetitivas, manipular datos y ampliar la interacción con el usuario.

Dónde está el editor de VBA y cómo se activa

El editor de VBA se abre con Alt+F11. Para crear código, utiliza Insertar > Módulo dentro de ese editor. El atajo Alt+F8 permite abrir después la lista de macros.

En Excel 2007, la pestaña que contiene algunos controles de macro puede aparecer como Programador o Desarrollador, según la configuración linguistic. Si no la ves, actívala así:

ArchivoOpcionesPersonalizar cinta de opciones
  1. Abre Archivo > Opciones.
  2. Selecciona Personalizar cinta de opciones.
  3. En la lista de pestañas principales, marca Programador.
  4. Pulsa Aceptar.
Cuidado: la pestaña puede llamarse Desarrollador en algunas instalaciones. El editor de VBA y sus módulos siguen siendo el mismo.

Tu primera macro paso a paso

Crea un libro nuevo y añade una hoja llamada Inventario. Escribe estos datos:

A1fx**Producto**
A B C D
1 Producto Existencias Precio Total
2 Cuaderno 4 3,50 14,00
3 Bolígrafo 10 1,20 12,00
4 Goma 8 0,80 6,40
5 Regla 6 2,10 12,60
6 Marcador 5 1,50 7,50
Inventario

Después añade la macro mediante Programador > Grabar macro. En Excel 2007, la ruta puede aparecer como Desarrollador > Grabar macro.

ProgramadorGrabar macro
  1. Escribe Saludo como nombre.
  2. Deja la ubicación en Este libro.
  3. Pulsa Aceptar.
  4. Selecciona A1 y escribe Hola.
  5. Pulsa Programador > Detener grabación.
  6. Abre el editor con Alt+F11.

La macro ha quedado en un módulo del libro. En Excel 2007, el nombre de una hoja dentro del código también puede aparecerRAN en inglés, como Sheet1, según la versión y el idioma.

Comprueba: en el editor de VBA aparece un Sub con el nombre Saludo y dentro se distingue la asignación de Hola a A1.

El Sub, el Range y el MsgBox del ejemplo

El grabador crea una estructura parecida a esta:

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

Sub Saludo() inicia el procedimiento. End Sub lo termina. La línea central usa Range("A1") para seleccionar la celda A1 y .Value para escribir el texto Hola.

MsgBox "Listo" abre una ventana con el mensaje. No cambia la hoja; solo informa al usuario de que la macro llegó al final.

Dónde queda el código después de cerrar el editor

El código queda guardado en un módulo del propio libro, no en una ventana independiente que debas conservar.

A1fxHola
A B C D
1 Hola Existencias Precio Total
2 Cuaderno 4 3,50 14,00
3 Bolígrafo 10 1,20 12,00
4 Goma 8 0,80 6,40
5 Regla 6 2,10 12,60
6 Marcador 5 1,50 7,50
Inventario
  1. Cierra el editor con Alt+Q.
  2. Abre la lista de macros con Alt+F8.
  3. Selecciona Saludo.
  4. Pulsa Ejecutar.
Comprueba: A1 muestra Hola y aparece el mensaje Listo. Después, deshaz el cambio con Ctrl+Z para recuperar el encabezado Producto.

Automatizar una tabla sin tocar cada celda

Ahora quitaremos Hola de A1 y crearemos una macro que recorra las cinco filas del inventario. El resultado esperado es el total de cada producto.

Abre el editor con Alt+F11, inserta un módulo y escribe:

Sub CalcularTotales()
    Dim i As Long

    For i = 2 To 6
        Cells(i, 4).Value = Cells(i, 2).Value * Cells(i, 3).Value
    Next i

    MsgBox "Totales calculados"
End Sub
  1. Ejecuta CalcularTotales con Alt+F8.
  2. Observa los resultados en D2:D6.
  3. Corrige, si es necesario, un precio o una cantidad y vuelve a ejecutar la macro.
D2fx=B2*C2
A B C D
1 Producto Existencias Precio Total
2 Cuaderno 4 3,50 14,00
3 Bolígrafo 10 1,20 12,00
4 Goma 8 0,80 6,40
5 Regla 6 2,10 12,60
6 Marcador 5 1,50 7,50
D2 Arrastra el controlador de relleno hasta D6
Inventario
Comprueba: los totales son 14,00; 12,00; 6,40; 12,60 y 7,50, y el mensaje confirma que el cálculo terminó.

Cells(fila, columna) y Range con dos direcciones

Cells(i, 4) representa una celda mediante números: primero la fila y después la columna. Cuando i vale 2, Cells(i, 4) es D2; cuando vale 6, es D6.

Range("D2") utiliza el formato de dirección de Excel. Ambos sistemas sirven para leer o escribir una celda. La diferencia práctica está en cambiar la dirección de una fila a otra: con Cells, cambia la variable i; con Range, habría que construir o cambiar la cadena.

En el ejemplo, Cells(i, 2) lee las existencias y Cells(i, 3) lee el precio. El resultado se escribe en Cells(i, 4).

Escribir fórmulas con Formula y FormulaR1C1

En lugar de calcular el total y convertirlo en un valor, podemos escribir una fórmula en cada fila. Añade este código:

Sub TotalesConFormula()
    Range("D2:D10").FormulaR1C1 = "=RC[-2]*RC[-1]"
End Sub

RC[-2] significa dos columnas a la izquierda de la celda actual; RC[-1], una columna a la izquierda. Excel ajusta esas referencias para cada fila.

D2fx=B2*C2
A B C D
1 Producto Existencias Precio Total
2 Cuaderno 4 3,50 14,00
3 Bolígrafo 10 1,20 12,00
4 Goma 8 0,80 6,40
5 Regla 6 2,10 12,60
6 Marcador 5 1,50 7,50
7
8
9
10
D2 El código también cubre D7:D10
Inventario
Comprueba: D2 contiene =B2*C2; D3 contiene =B3*C3 y así hasta D10. Si cambias B3, el total de esa fila se actualizará.
Nota: los argumentos y separadores de las fórmulas escritas directamente en la hoja dependen de la configuración regional. Los ejemplos de este artículo usan punto y coma; con punto decimal se utiliza la coma.

Por qué Formula exige inglés y coma

Las propiedades .Formula y .FormulaR1C1 escriben fórmulas con la sintaxis del modelo de objetos: nombres de función en inglés y coma como separador. .FormulaLocal y .FormulaR1C1Local emplean el idioma y la configuración regional del usuario.

=SUM(A2:B2)

=SUMA(A2:B2)

Range("E2").Formula = "=SUM(A2:B2)"
Range("F2").FormulaLocal = "=SUMA(A2:B2)"

No intercambies ambas formas: .Formula no reconoce SUMA, mientras que .FormulaLocal sí utiliza el nombre localizado.

Guardar el libro con macros sin perderlas

Un libro normal .xlsx no conserva macros. Para mantener el código de Saludo y CalcularTotales, guarda el inventario como Libro de Excel habilitado para macros, con extensión .xlsm.

ArchivoGuardar como
  1. Abre Archivo > Guardar como.
  2. Elige la carpeta de trabajo.
  3. En Tipo, selecciona *Libro de Excel habilitado para macros (.xlsm)**.
  4. Mantén el nombre Inventario.
  5. Pulsa Guardar.
  6. Confirma que quieres conservar el formato con VBA.

Si eliges .xlsx, Excel muestra una advertencia: el formato actual puede conservarVBAmacros. Si continúas y guardas en ese formato, las macros se eliminan del archivo.

Cuidado: guarda una copia del proyecto antes de probar cambios. Un libro .xlsm sigue siendo un archivo de Excel con código ejecutable y debe repartirse con cautela.
Comprueba: al volver a abrir el archivo desde el disco, Alt+F8 todavía muestra Saludo y CalcularTotales.

Los errores más comunes al ejecutar tu macro

El error 1004 al escribir una fórmula

El mensaje «Se ha producido el error '1004' en tiempo de ejecución» aparece al asignar =SUMA(...) mediante .Formula. La causa es que esta propiedad exige el nombre inglés SUM y la coma como separador.

Range("E2").Formula = "=SUM(A2:B2)"

La alternativa localizada es:

Range("F2").FormulaLocal = "=SUMA(A2:B2)"

La primera forma es la más-portable para código guardado en distintas instalaciones de Excel. Revisa también los paréntesis y que falte ningún signo de igualdad.

Una macro descargada que Excel no ejecuta

Excel 2007 bloquea por defecto las macros de archivos descargados. En el botón Office, abre Propiedades y busca la sección de seguridad.

  1. Pulsa el botón Office.
  2. Selecciona Propiedades.
  3. En Seguridad, pulsa Habilitar contenido.
  4. Cierra las propiedades.
  5. Ejecuta la macro con Alt+F8.
Cuidado: habilita contenido solo si confías en el archivo y en quien lo envió. Revisa el código antes de ejecutarlo.

Otro fallo habitual es olvidar End Sub. En ese caso, VBA señala la instrucción incompleta y no puede compilar el procedimiento. La estructura mínima debe ser:

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

Lo que VBA hace y lo que no en Excel 2007

Excel 2007 admite el editor de VBA, la grabación de macros, procedimientos Sub, bucles y objetos básicos como Range, Cells, Worksheet y Workbook. También permite guardar el código en .xlsm.

Capacidad Excel 2007 Microsoft 365
Grabar y editar macros VBA Sí Sí
Usar Range, Cells y Worksheet Sí Sí
Guardar el libro como .xlsm Sí Sí
Herramientas y construcciones de VBA más recientes Limitadas Ampliadas
Compatibilidad absoluta entre libros y versiones No garantizada No garantizada

Una macro antigua puede seguir funcionando, pero algunos objetos, propiedades o formas de escribir instrucciones cambian. Si falla al abrirla en otra versión, copia sus instrucciones al editor de esa versión y pruébala por partes. En Excel 2007 y Microsoft 365 pueden existir diferencias de compatibilidad.

Cuidado: Excel 2007 no tiene soporte técnico desde octubre de 2017. No lo abras con archivos recibidos de Internet sin comprobar su origen.

Lo que ya sabes hacer con VBA

  • Abrir el editor de VBA con Alt+F11 e insertar un módulo.
  • Activar la pestaña Programador desde Personalizar cinta de opciones.
  • Grabar una acción y revisar el código generado.
  • Entender Sub Saludo(), Range("A1").Value, MsgBox y End Sub.
  • Recorrer una tabla con For y Next, usando Cells(fila, columna).
  • Escribir fórmulas ajustables con Range.FormulaR1C1.
  • Diferenciar Formula en inglés de FormulaLocal en español.
  • Guardar el libro con macros en formato .xlsm.

Tu siguiente paso es abrir el libro de inventario, crear una copia y sustituir el mensaje del MsgBox por una operación que reemplace por datos reales. Consulta la documentación oficial de Microsoft Learn sobre VBA y la referencia de Range.Formula y Range.FormulaR1C1 antes de ampliar la macro.

Los datos de este tutorial están comprobados en octubre de 2026.

Dudas al aprender VBA en Excel 2007

1. ¿Dónde encuentro ejemplos de VBA para Excel?

No necesitas instalar nada aparte para usar el ejemplo. En Excel 2007, abre el editor con Alt+F11, inserta un módulo y escribe o pega el código; después ejecútalo desde la macro elegida con Alt+F8.

2. ¿Qué necesito para aprender Excel VBA?

Necesitas Excel 2007 para Windows y una copia de seguridad del libro antes de probar cambios. Excel 2007 admite macros, pero su soporte terminó en octubre de 2017; los datos y funciones del artículo se comprobaron en octubre de 2026.

3. ¿Qué es programar con VBA?

Es escribir instrucciones que Excel utiliza para realizar tareas o responder a acciones. En este tutorial, un Sub escribe un valor, un bucle For calcula totales y un MsgBox confirma que terminó la operación.

4. ¿Microsoft Excel es compatible con macros VBA?

Sí. Excel 2007 admite macros VBA y permite guardarlas en libros .xlsm; un .xlsx no conserva esas macros. En versiones posteriores hay más funciones, pero una macro antigua puede necesitar ajustes al ejecutarse.

5. ¿Dónde puedo encontrar 2.500 ejemplos de VBA en PDF?

La documentación oficial de Microsoft Learn ofrece Introducción a VBA y referencias del modelo de objetos para consultar por temas. Para-examples-completos, resulta más útil estudiar una macro grabada, modificarla y comprobar el resultado en un libro de prueba.

6. ¿Qué código VBA necesito para automatizar una tabla?

En el tutorial se usa un bucle For y la propiedad Cells(fila, columna).Value para calcular cinco totales. También se asigna una fórmula a D2:D10 con Range.FormulaR1C1, que ajusta las referencias automáticamente.

7. ¿Cómo descargo VBA para Excel?

No necesitas descargar VBA por separado: forma parte de Excel 2007 para Windows. Abre el editor con Alt+F11 y crea un módulo desde Insertar > Módulo; guarda el libro como .xlsm para conservar el código.

8. ¿Dónde está la documentación oficial de VBA para Excel?

La guía oficial de Microsoft Learn explica cómo grabar una macro, editar código y usar el modelo de objetos de Office. También puedes consultar la referencia de Range.Formula y Range.FormulaR1C1 para entender cómo se escriben las fórmulas desde VBA.

Fuentes

  1. MicrosoftIs there a difference in Excel 2007 and Excel 365 with respect to …consultado el 28/10/2026
  2. MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 28/10/2026
  3. MicrosoftLAMBDA — documentación oficialconsultado el 28/10/2026
  4. MicrosoftRange.Formula, FormulaLocal, FormulaR1C1 y FormulaR1C1Local — documentación oficialconsultado el 28/10/2026