Inicio
» MS OFFICE
»
Cómo enviar correos electrónicos con VBA en Excel: 11 pasos para Outlook
Cómo enviar correos electrónicos con VBA en Excel: 11 pasos para Outlook
Excel VBA permite preparar un correo electrónico de Outlook con destinatario, asunto, mensaje y archivo adjunto. Esta guía de 11 pasos utiliza la versión clásica de Outlook para Windows y abre el mensaje como borrador para que pueda revisarlo antes de enviarlo. Microsoft indica que las macros VBA y el modelo de objetos de Outlook no son compatibles con la nueva versión de Outlook, por lo que este ejemplo basado en COM no funcionará con la nueva versión de Outlook ni con Outlook en un navegador.
Antes de comenzar, guarda tu trabajo y confirma que Outlook clásico esté instalado con una cuenta de correo electrónico configurada. El código utiliza enlace tardío, por lo que no necesitas agregar una referencia a la biblioteca de Outlook específica de la versión.
Enviar un correo electrónico con Excel VBA en 11 pasos
1. Confirme que Outlook clásico esté disponible.
Abra la versión de escritorio de Outlook y asegúrese de que su buzón de correo pueda enviar mensajes. Esta macro requiere la versión clásica de Outlook para Windows; una pestaña de Outlook.com, Outlook en la web y la nueva versión de Outlook no muestran el objeto de automatización COM que se utiliza aquí. Consulte la comparación de características de Outlook clásico y nuevo de Microsoft .
Paso 1: Utilice las versiones de escritorio de Excel para Windows y la versión clásica de Outlook.
2. Guarda el libro de trabajo como un archivo habilitado para macros.
En Excel, seleccione Archivo > Guardar como y , a continuación, Libro de Excel habilitado para macros (*.xlsm) . Un archivo .xlsx normal no puede conservar el código VBA. Guarde el libro en una ubicación a la que pueda acceder y recuerde su ruta.
Paso 2: Al guardar, seleccione el formato .xlsm habilitado para macros.
3. Abra el Editor de Visual Basic.
Con el libro de trabajo abierto en la aplicación de escritorio de Excel, pulse Alt+F11 . En el Explorador de proyectos, localice el proyecto cuyo nombre coincida con el de su libro de trabajo. Si el editor está oculto, pulse Ctrl+R para mostrar el Explorador de proyectos.
Paso 3: El proyecto del libro de trabajo aparece en el Editor de Visual Basic.
4. Inserte un módulo estándar.
En el Editor de Visual Basic, seleccione el proyecto del libro de trabajo, elija Insertar > Módulo y utilice el nuevo panel de código. Un módulo estándar es un lugar adecuado para una macro que se ejecuta bajo demanda.
Paso 4: Inserte un módulo estándar para la macro.
5. Añada la macro de creación de borradores.
Pegue este procedimiento en el módulo. Comprueba que el libro de trabajo se haya guardado, verifica la ruta del archivo adjunto, crea un mensaje de Outlook y lo muestra sin enviarlo.
Paso 5: Añada el procedimiento al nuevo módulo.
Option Explicit
Sub CreateOutlookDraft()
Dim olApp As Object
Dim olMail As Object
Dim attachmentPath As String
If Len(ThisWorkbook.Path) = 0 Then
MsgBox "Save the workbook before creating the email.", vbExclamation
Exit Sub
End If
attachmentPath = ThisWorkbook.FullName
If Len(Dir$(attachmentPath)) = 0 Then
MsgBox "Workbook attachment not found: " & attachmentPath, vbExclamation
Exit Sub
End If
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
If olApp Is Nothing Then
Set olApp = CreateObject("Outlook.Application")
End If
On Error GoTo 0
If olApp Is Nothing Then
MsgBox "Classic Outlook could not be opened.", vbExclamation
Exit Sub
End If
Set olMail = olApp.CreateItem(0)
With olMail
.To = "recipient@example.com"
.CC = ""
.Subject = "Monthly report"
.Body = "Hi," & vbCrLf & vbCrLf & _
"Please review the attached monthly report." & _
vbCrLf & vbCrLf & "Thanks,"
.Attachments.Add attachmentPath
.Display
End With
Set olMail = Nothing
Set olApp = Nothing
End Sub
6. Reemplace los detalles del correo electrónico de ejemplo.
Cambia recipient@example.comal destinatario previsto. Agrega direcciones .CCsi es necesario, luego edita .Subjectel texto en .Body. Mantén las comillas alrededor de los valores de texto y usa ¶ unir líneas con vbCrLf. El ejemplo usa un mensaje de texto plano; no requiere formato HTML.
Paso 6: Reemplace el destinatario de ejemplo; edite el asunto y las líneas del mensaje siguiendo el mismo procedimiento.
7. Elija el archivo adjunto
Tal como está escrito, ThisWorkbook.FullNameadjunta el libro de trabajo habilitado para macros guardado. Si desea adjuntar un informe aparte, reemplace esa asignación con su ruta de archivo completa, por ejemplo "C:\Reports\MonthlyReport.xlsx". Confirme que el archivo está presente y accesible antes de ejecutar la macro. El Attachments.Addmétodo adjunta un archivo al mensaje.
Paso 7: Confirme que la ruta del archivo adjunto apunta a un archivo existente.
8. Guarda la macro.
En el editor, pulse Ctrl+S o vuelva a Excel y guarde el libro. Conserve el formato .xlsm; al guardarlo como .xlsx, se eliminará el proyecto VBA. Guarde el archivo en una ubicación de confianza y no habilite las macros en un libro de origen desconocido.
Paso 8: Guarde el libro de trabajo conservando la extensión .xlsm.
9. Ejecutar el procedimiento
Haz clic dentro CreateOutlookDrafty pulsa F5 , o usa el comando Ejecutar del editor. Si Excel bloquea la macro, sigue la política de tu organización. Microsoft indica que Office bloquea las macros en archivos marcados como provenientes de internet de forma predeterminada; consulta su guía de seguridad de macros en lugar de desactivar las protecciones globalmente.
Paso 9: Ejecute la macro desde el Editor de Visual Basic.
10. Revisa el borrador y envíalo tú mismo.
Outlook debería abrir un mensaje con la dirección, el asunto, el cuerpo y el archivo adjunto del libro de trabajo completados. Verifique a cada destinatario y abra el archivo adjunto si corresponde. Haga clic en el botón Enviar de Outlook solo después de revisar el borrador. El código utiliza intencionadamente .Display, no .Send, para evitar que se envíe automáticamente un archivo con errores tipográficos o obsoleto.
Paso 10: Revise el borrador de Outlook y el libro de trabajo adjunto.Enviar únicamente después de confirmar los detalles del mensaje.
11. Solucionar problemas comunes
El componente ActiveX no puede crear el objeto o Outlook no está disponible: confirme que la versión clásica de Outlook para Windows esté instalada y configurada. Las versiones nuevas de Outlook y Outlook para navegador no proporcionan el modelo de objetos de Outlook necesario.
La macro no se ejecutará: confirme que el libro de trabajo sea .xlsm y revise el aviso de seguridad de Excel. No habilite todas las macros para evitar la advertencia; confíe solo en los archivos y editores que reconozca.
El archivo adjunto no se encuentra: guarde primero el libro de trabajo o corrija la ruta completa del informe independiente. Compruebe que el archivo no esté en una unidad no disponible.
Este flujo de trabajo está diseñado para mensajes que se revisan y envían en Outlook clásico. Para correos electrónicos empresariales recurrentes o que no requieren supervisión, utilice un servicio de automatización aprobado por la organización y valide los destinatarios, los archivos adjuntos y los permisos por separado.
Si Office bloquea una macro, siga las directrices de seguridad de Microsoft y la política de su organización.