Outlook

Macros de Outlook en Excel: cómo automatizar el correo con VBA

octubre 12, 2026 Tuto Excel 13 min read
Macros de Outlook en Excel: cómo automatizar el correo con VBA

Trabajar con Excel muchas veces termina en el mismo paso: copiar datos de la hoja, abrir Outlook, pegar el correo, escribir el mensaje y pulsar Enviar. Cuando la lista es corta se hace a mano; cuando tiene decenas de filas se hace pesado y se cometen errores. La macro que vas a ver automatiza justo eso: Outlook envía un correo por cada cliente de tu hoja, usando el nombre y el mensaje que tú ya tienes escritos en Excel.

Los macros viven en Outlook, no en Excel, y se escriben en un lenguaje llamado VBA (Visual Basic para Aplicaciones). Funcionan en Excel 2010, 2013, 2016, 2019, 2021, 2024 y Microsoft 365, tanto en Windows como en Mac. Al terminar, vas a saber crear tu primera macro, guardarla sin perderla, lanzarla con un clic y reconocer los errores más típicos.

Qué es una macro de Outlook y para qué se usa desde Excel

Una macro de Outlook es un pequeño programa escrito en VBA que Outlook ejecuta cuando tú se lo pides. Desde Excel, la macro se lanza como cualquier otra macro del libro, pero las órdenes que envía son a Outlook: «crea un correo», «rellena el destinatario», «manda». Por eso se llaman macros de Outlook aunque las escribas desde Excel: lo que automatizas es Outlook, no la hoja.

La utilidad más directa es enviar el mismo correo a muchas personas con datos que ya tienes en Excel: clientes, alumnos, proveedores, pacientes. En lugar de redactar cada mensaje a mano, la macro recorre la hoja, toma el nombre y la dirección, y envía uno por uno. También se usa para generar borradores, guardar archivos adjuntos, mover correos a carpetas o responder mensajes según una regla.

Piénsalo así: Excel es la lista de a quién escribir y qué decir; Outlook es el cartero que entrega; la macro es la orden que le das al cartero. Si el cartero no está (Outlook cerrado o referencia nueva sin macros), la macro no funciona aunque el libro esté bien escrito.

Dónde se crean los macros en Outlook y qué necesitas

Los macros de Outlook se escriben en el editor de Visual Basic, el mismo editor que usa Excel. Para llegar hasta él necesitas la pestaña Programador, que suele venir oculta. Lo primero es hacerla visible.

ArchivoOpcionesPersonalizar cinta de opciones

Una vez visible la pestaña, la ruta para abrir el editor es la misma que en Excel: Alt+F11 desde Outlook, o desde la propia pestaña Programador > Código > Visual Basic. El libro de Excel donde vivas la macro se guarda después como .xlsm, el formato que conserva el código VBA. En .xlsx, al guardar, las macros se pierden sin avisar.

El editor de VBA: cómo es por dentro

El editor que se abre con Alt+F11 tiene tres partes que vas a usar todo el tiempo. A la izquierda, el panel de proyectos (Proyecto) lista los libros y, dentro de cada uno, las hojas y los módulos. A la derecha, la ventana de código es la hoja en blanco donde se escribe el macro. Debajo, la ventana Inmediato sirve para probar una línea suelta escribiendo ? delante y pulsando Entrar.

Para crear un macro nuevo se usa Insertar > Módulo, y se obtiene una hoja en blanco donde escribir varios Sub seguidos. Cada macro empieza con Sub Nombre() y termina con End Sub. Los nombres no llevan espacios ni tildes.

ThisOutlookSession: el contenedor que mete todo

ThisOutlookSession es un módulo interno del proyecto de Outlook que se ejecuta dentro de Outlook. Ahí se escriben macros que disparan al recibir un correo, al enviarlo o al abrir Outlook. Para el caso de enviar desde Excel no lo necesitas: tu macro vive en un módulo normal del libro de Excel.

Un módulo normal para tus macros

Un módulo estándar es una hoja de código independiente. Insertar > Módulo lo crea y le asigna un nombre (Módulo1, Módulo2…). Ahí escribes tus Sub ordenados, uno debajo de otro, y todos ven las mismas variables si las declaras con Public en lugar de Dim.

Crear tu primer macro: un correo que se envía solo

Vas a partir de una hoja llamada Clientes con cinco personas: nombre, correo y el mensaje que quieres enviar a cada una. Al ejecutar la macro, Outlook mandará un correo por fila usando esos datos.

A1fx**Cliente**
A B C
1 Cliente Correo Mensaje
2 Ana Ruiz ana@correo.com Hola Ana, tu pedido sale hoy.
3 Pedro Gómez pedro@correo.com Hola Pedro, gracias por comprar.
4 Lucía Marín lucia@correo.com Hola Lucía, tu factura está lista.
5 Marcos Vidal marcos@correo.com Hola Marcos, confirmamos la cita.
6 Sara León sara@correo.com Hola Sara, ya tenemos tu pedido.
Clientes

Pasos para crear la macro:

  1. Abre Excel con la hoja Clientes escrita como arriba.
  2. Pulsa Alt+F11 para abrir el editor de VBA.
  3. En el menú, ve a Insertar > Módulo.
  4. En la hoja en blanco que aparece, pega el código de la siguiente sección.
  5. Cierra el editor con Alt+Q o pulsando la X.

El código del macro, línea por línea

Sub EnviarCorreo()
    Dim hoja As Worksheet
    Dim celda As Range

    Set hoja = ThisWorkbook.Sheets("Clientes")

    For Each celda In hoja.Range("A2:A6")
        Dim correo As Outlook.Application
        Dim mensaje As Outlook.MailItem

        Set correo = New Outlook.Application
        Set mensaje = correo.CreateItem(olMailItem)

        With mensaje
            .To = celda.Offset(0, 1).Value
            .Subject = "Aviso para " & celda.Value
            .Body = celda.Offset(0, 2).Value
            .Send
        End With
    Next celda

    MsgBox "Correos enviados: " & hoja.Range("A2:A6").Rows.Count
End Sub
Nota: En Excel configurado con punto decimal (México, Estados Unidos) el separador de argumentos es la coma. La macro se guarda como .xlsm.

celda.Offset(0, 1).Value toma la celda una columna a la derecha de la actual, que es donde está el correo. celda.Offset(0, 2).Value toma la celda dos columnas a la derecha, el mensaje.

Activar la pestaña Programador si no la ves

  1. Abre Outlook.
  2. Archivo > Opciones > Personalizar cinta de opciones.
  3. En la columna derecha, marca la casilla Programador.
  4. Pulsa Aceptar.

En Mac la ruta es Outlook > Preferencias > Cinta y barra de herramientas, y se activa igual desde el panel.

Guardar el libro con macros para no perderlas

  1. Ve a Archivo > Guardar como.
  2. Elige la carpeta donde quieras guardar el archivo.
  3. En Tipo, escoge Libro de Excel habilitado con macros (.xlsm).
  4. Ponle un nombre y pulsa Guardar.
Cuidado: Si guardas como .xlsx, las macros se borran al guardar sin avisarte. Al abrir un .xlsm descargado de internet, Excel bloquea las macros hasta que pulses "Habilitar contenido" en la barra de mensajes amarilla de arriba.

Ejecutar el macro desde la barra de acceso rápido

Para lanzar el macro sin tocar el teclado cada vez, lo mejor es añadirlo a la barra de herramientas de acceso rápido, la franja que está justo encima de la cinta de opciones.

ArchivoOpcionesBarra de herramientas de acceso rápido

Al pulsar Aceptar verás un nuevo icono en la barra. Cada botón de esa barra tiene un número: el primero es Alt+1, el segundo Alt+2, y así. Tu macro será uno de ellos. La próxima vez que quieras enviar los correos, pulsa Alt y el número que le haya tocado, y Outlook arrancará el envío.

Disparar el macro desde una celda de Excel con un botón

Otra forma más visual de lanzar la macro es dibujar una forma en la hoja y asignarle el macro. Queda como un botón claro y nadie tiene que recordar el atajo.

  1. Ve a Insertar > Ilustraciones > Formas y elige un rectángulo redondeado.
  2. Dibuja la forma sobre la celda D2.
  3. Clic derecho sobre la forma > Editar texto y escribe "Enviar correos".
D2fx[Enviar correos]
A B C D
1 Cliente Correo Mensaje
2 Ana Ruiz ana@correo.com Hola Ana, tu pedido sale hoy. [Enviar correos]
3 Pedro Gómez pedro@correo.com Hola Pedro, gracias por comprar.
4 Lucía Marín lucia@correo.com Hola Lucía, tu factura está lista.
5 Marcos Vidal marcos@correo.com Hola Marcos, confirmamos la cita.
6 Sara León sara@correo.com Hola Sara, ya tenemos tu pedido.
Clientes
Comprueba: La forma aparece sobre la celda D2 con el texto "Enviar correos". Si al hacer clic no pasa nada, revisa el siguiente apartado.

Asignar la macro a la forma

Clic derecho sobre la forma > Asignar macro > elige EnviarCorreo > Aceptar. Ahora al pulsar la forma se ejecuta el macro.

Proteger el botón para que nadie lo borre sin querer

Clic derecho sobre la forma > Formato de forma > Propiedades > marca "No mover ni cambiar tamaño con celdas". Así, si insertas filas o cambias el tamaño de la columna, el botón se queda donde estaba.

Por qué tu macro falla: los errores más habituales

Cuatro de cada cinco problemas con macros de Outlook son siempre los mismos. Si algo no funciona, pasa por esta lista antes de tocar el código.

«El proveedor no está disponible» o el macro no se ejecuta

Lo que se ve: al pulsar el botón o el atajo, aparece un cuadro con el error "El proveedor no está disponible" o simplemente no pasa nada. La causa más común es que las macros del libro siguen bloqueadas por la barra de mensajes amarilla que aparece al abrir un .xlsm. Para desbloquearlas, pulsa Habilitar contenido en esa barra. La otra causa típica es que Excel no encontró Outlook en el equipo, por ejemplo si estás usando el nuevo Outlook de Microsoft 365, que no admite macros.

El correo se manda vacío

Lo que se ve: Outlook recibe la orden de enviar, pero el destinatario, el asunto o el cuerpo están en blanco. La causa es que el rango apunta a otra hoja distinta de la que tiene los datos. Se arregla cambiando la línea del rango para que use el nombre de la hoja:

=ThisWorkbook.Sheets("Clientes").Range("A2")

Así, aunque tengas varias hojas en el libro, la macro siempre leerá los datos de Clientes.

El macro se ejecuta pero no se ve el correo

Lo que se ve: la macro termina sin error y dice "Correos enviados", pero el mensaje no aparece en la carpeta Elementos enviados de Outlook hasta varios minutos después. La causa es que has usado .Send directamente, sin mostrar el correo antes. Para revisar cada mensaje antes de enviarlo, sustituye .Send por .Display, mira el correo, y solo entonces pulsa .Send.

Lo que no puedes hacer con macros de Outlook

Los macros VBA son una herramienta veterana y muy potente, pero tiene dos límites importantes que conviene conocer antes de empezar.

El primero es que el nuevo Outlook de Microsoft 365 (el que tiene el botón "Nuevo Outlook" arriba a la derecha) no admite macros VBA. Microsoft ha retirado el soporte de VBA en esa versión. La solución hoy es volver a Outlook clásico.

El segundo es que las macros no funcionan en Excel para la web ni en Excel para móviles. Allí la automatización se hace con Scripts de Office o con Power Automate, que es otro lenguaje.

Volver a Outlook clásico si tu equipo se actualizó

  1. Arriba a la derecha de Outlook, busca el botón Switch to Classic Outlook (Cambiar a Outlook clásico). Si no aparece, ve a Ayuda > Cambiar a Outlook clásico.
  2. Confirma el cambio. Outlook se reiniciará en su versión clásica, donde sí funcionan las macros VBA.
  3. Si la opción ya no está disponible en tu cuenta, Microsoft la ha retirado definitivamente y tendrás que esperar a una alternativa oficial.

Dónde sí y dónde no funciona el macro

Entorno ¿Funciona la macro?
Excel 2010/2013/2016/2019/2021/2024 en Windows Sí
Excel para Microsoft 365 en Windows con Outlook clásico Sí
Excel para Microsoft 365 en Windows con Outlook nuevo No
Excel para Mac con Outlook para Mac Sí, con diferencias en algunos objetos
Excel para la web No
Excel para móviles (iPhone, iPad, Android) No

Lo que ya sabes hacer con macros en Outlook

  • Crear una macro VBA en un módulo del editor de Visual Basic.
  • Guardar el libro como .xlsm para no perder el código al cerrar.
  • Asignar la macro a una forma de la hoja y protegerla para que no se mueva.
  • Ejecutarla desde la barra de acceso rápido con Alt + número.
  • Conocer los dos límites clave: el nuevo Outlook no las ejecuta y Excel para la web tampoco.

El siguiente paso natural es adjuntar a cada correo un PDF generado por la propia macro, por ejemplo la factura del cliente, usando el método ExportAsFixedFormat de la hoja de Excel. Eso cierra el círculo: Excel prepara el archivo, la macro lo adjunta y Outlook lo envía, todo con un solo clic.

Dudas al usar macros de Outlook desde Excel

1. ¿Cómo puedo automatizar el envío de correos desde Excel con macros de Outlook?

Desde el editor de VBA (Alt+F11) insertas un módulo y usas CreateObject("Outlook.Application") para abrir Outlook, redactar un MailItem con .To, .Subject y .Body, y enviarlo con .Send. Es la forma más rápida de mandar correos automáticos desde una macro sin tener Outlook abierto a la vista.

2. ¿Es necesario tener Outlook instalado para enviar correos con macros desde Excel?

Sí, Outlook tiene que estar instalado en el equipo porque la macro crea el correo con el modelo de objetos de Outlook. Si Outlook no está, el código dará error en la línea de CreateObject y el envío no se completará.

3. ¿Cómo activo la referencia a Outlook en el editor de VBA de Excel?

En el editor VBA pulsa Alt+F11, ve a Herramientas > Referencias y marca "Microsoft Outlook XX.0 Object Library" (XX según tu versión, por ejemplo 16.0). Sin esa referencia, VBA no reconoce los objetos MailItem ni sus propiedades.

4. ¿Se puede adjuntar un archivo de Excel a un correo enviado por macro?

Sí, usa la propiedad .Attachments.Add del MailItem indicando la ruta completa, por ejemplo .Attachments.Add "C:\Carpetas\informe.xlsx". Outlook adjuntará ese archivo antes de llamar a .Send o .Display según quieras enviarlo o solo mostrarlo.

5. ¿Cómo envío un correo con copia y copia oculta desde una macro de Excel?

Rellena las propiedades .CC para copia y .BCC para copia oculta del objeto MailItem antes de enviarlo, por ejemplo .CC = "jefe@empresa.com" y .BCC = "auditoria@empresa.com". Puedes poner varias direcciones separándolas con punto y coma dentro de la misma cadena.

6. ¿Puedo enviar varios correos personalizados con un solo bucle en VBA?

Sí, recorre una hoja con un bucle For Each o For i = 2 To UltimaFila, leyendo el nombre y el correo de cada fila y rellenando el cuerpo del MailItem con esos datos. Es el patrón típico para mandar avisos personalizados a una lista de clientes o empleados.

7. ¿Outlook mostrará una advertencia de seguridad al enviar correos por macro?

Sí, Outlook suele mostrar un cuadro emergente pidiendo confirmación la primera vez que una macro externa intenta enviar correo, y a veces también al leer contactos. Para evitarlo en entornos controlados se usa Redemption o un complemento firmado, pero en el día a día basta con marcar "Permitir" cuando aparece.

Fuentes

  1. MicrosoftMacros in the new Outlook as part of Microsoft 365?consultado el 05/10/2026
  2. MicrosoftCreate a macro in Outlook – Microsoft Supportconsultado el 05/10/2026
  3. MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 05/10/2026
  4. MicrosoftAtajos que funcionan igual en cualquier idioma — documentación oficialconsultado el 05/10/2026
  5. MicrosoftFormatos de archivo de Excel — documentación oficialconsultado el 05/10/2026