¿Cómo enviar un correo electrónico en Outlook con VBA?

Actualizado: agosto de 2021; Aplicable a Microsoft Outlook 365 / 2019 / 2016

Aquí hay una nota que recibimos de un lector.

Gracias por su muy útil ayuda de codificación de Outlook. Me pregunto si puede compartir algún código para ayudar a automatizar el envío de un correo electrónico en Outlook. Sé que hay varias formas de enviar mensajes recurrentes, pero estoy específicamente interesado en usar VBA para esta tarea.

Gracias por la pregunta. El envío automático de correos electrónicos parece estar entre las tareas más útiles y populares que puede automatizar con VBA. Siga leyendo para obtener más detalles y un script simple para comenzar aquí.

Escribir VBA para enviar correos electrónicos de Outlook

En el ejemplo bastante simple a continuación, cubriremos los siguientes pasos:

  1. En primer lugar, usaremos el modelo de objetos de Outlook de VBA para crear un nuevo elemento de correo electrónico.
  2. Luego continuaremos y estableceremos la importancia del mensaje, los destinatarios (separados por punto y coma) y el estilo y contenido del texto del cuerpo.
  3. Luego mostraremos el mensaje en su aplicación de Microsoft Outlook.
  4. Por último, seguiremos adelante y lo enviaremos a los destinatarios.

Aquí está el código VBA simple para crear y enviar correos electrónicos simples automáticamente. Tenga en cuenta que debe mejorar fácilmente este script para incluir archivos adjuntos, tareas, etc., pero comencemos con un script muy básico.

Sub SendMail()
Dim MyEmail As MailItem
Set MyEmail = Application.CreateItem(olMailItem)

With MyEmail
.To = ""
.Importance = olImportanceHigh
.Subject = ""
.Body = ""
.BodyFormat = olFormatHTML
.Display
End With

'I purposely commented the next line, uncomment it by removing the "'" sign to send your email.
' MyEmail.Send
End Sub

Atajo de macro de Outlook VBA

Es posible que desee asociar el código VBA que acaba de escribir con un botón de comando en Outlook. Esto le permitirá iniciarlo fácilmente desde un acceso directo ubicado en la cinta de opciones de Outlook.

Así es como se hace:

  1. Primero, continúe y abra Microsoft Outlook.
  2. Presiona Archivo y luego selecciona Opciones
  3. Ahora continúe y seleccione Personalizar cinta.
  4. En la sección Personalizar cinta de opciones, verá el cuadro de lista Elegir comandos de.
  5. Seleccionar macros
  6. Luego, seleccione su código VBA recién creado, en nuestro caso, el nombre debe ser SendMail.
  7. Luego presione Agregar y luego Aceptar. Opcionalmente, es posible que desee asignar un icono a su Macro.
  8. Su macro estará disponible en la barra de herramientas de acceso rápido en la parte superior izquierda de su aplicación de Outlook.

Posibles problemas con la configuración de macros de VBA

Es posible que deba ajustar la configuración de macros de Outlook para poder ejecutar macros. Si es así, así es como se hace.

Bonificación: envíe un correo electrónico desde Outlook usando PowerShell

En PowerShell, puede utilizar el cmdlet Send-MailMessage para enviar correos electrónicos. Sin embargo, requiere que se autentique en el servidor de correo y no admite métodos de autenticación modernos, como OAuth y Autenticación moderna de Microsoft. Por lo tanto, es mucho más fácil enviar un correo electrónico si tiene un perfil de Outlook configurado en su computadora.

A continuación se muestra un ejemplo de un script de PowerShell que lee datos de un archivo Excel y utiliza un perfil de Outlook para enviar un correo electrónico a cada usuario:

# abrir el archivo Excel
$ExcelObj = Nuevo-Objeto -comobject Excel.Application
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\user_list.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("Hoja1")
# Obtener el número de filas completadas en un archivo xlsx
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Recorra todas las filas de la columna 1, comenzando desde la segunda fila (estas celdas contienen los nombres de usuario y los correos electrónicos).
para($i=2;$i -le $rowcount;$i++){
$useremail = $ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
$FullUsername =  $ExcelWorkSheet.Columns.Item(2).Rows.Item($i).Text
$Estado =  $ExcelWorkSheet.Columns.Item(4).Rows.Item($i).Text
$pwdchange = $ExcelWorkSheet.Columns.Item(3).Rows.Item($i).Text
# Generar texto del cuerpo del mensaje
$cadenaSubj = " El estado de su cuenta en el dominio woshub.com "
$strBody = "Estimado " + $Nombre de usuario completo
$strCuerpo = $strCuerpo + " `r`n Su cuenta en el dominio woshub.com está en " + $Estado
$strBody = $strBody + "`r`n La fecha y hora del último cambio de contraseña es: " +  $pwdchange
$strfile="C:\ps\" + $useremail + ".txt"
# Suponemos que Outlook se está ejecutando, si no es así, deberá iniciarlo con el comando $outlook = new-object -comobject outlook.application
$outlook = [Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")
$correo electrónico = $outlook.CreateItem(0)
$email.To = $useremail
$email.Subject = $strSubj
$email.Body =  $strBody
# Adjunte un archivo (si es necesario)
$correo electrónico.Attachments.add($strfile)
#enviar el mensaje de correo electrónico
$correo electrónico.Enviar()
}
$ExcelWorkBook.close($true)

script de PowerShell para enviar correo electrónico desde el perfil configurado de Outlook

Este script de PowerShell supone que Outlook se está ejecutando en su computadora. El script genera el asunto y el cuerpo del correo electrónico para cada dirección SMTP del destinatario en el archivo XLSX y adjunta el archivo. Luego envía el correo electrónico.


¿Cómo crear una plantilla de correo electrónico en Microsoft Outlook.com 365?

¿Cómo crear una plantilla de correo electrónico en Microsoft Outlook.com 365?

¿Cómo crear una plantilla de correo electrónico en Microsoft Outlook.com 365?

¿Cómo modificar el coloreado de viñetas en Word?

¿Cómo modificar el coloreado de viñetas en Word?

En esta publicación, aprenderá cómo modificar el color y el tamaño de las listas con viñetas / puntos en Excel, PowerPoint y Word 365 / 2016 / 2019.

Detenga y elimine mensajes de correo electrónico duplicados en Outlook 2016 y 2019

Detenga y elimine mensajes de correo electrónico duplicados en Outlook 2016 y 2019

¿Su buzón está repleto de entradas de correo electrónico duplicadas? Aprenda cómo dejar de recibir y eliminar mensajes redundantes en los buzones de correo de Outlook 365/2019/2016 tanto en MAC como en Windows.

¿Cómo agregar imágenes gif en el cuerpo o la firma del correo electrónico de Outlook 2016/2019?

¿Cómo agregar imágenes gif en el cuerpo o la firma del correo electrónico de Outlook 2016/2019?

Aprenda a agregar/incrustar y enviar una imagen gif a su correo electrónico saliente de Outlook 2016 y 2019.

¿Cómo actualizar el correo de mi bandeja de entrada de Outlook cuando no se actualiza automáticamente?

¿Cómo actualizar el correo de mi bandeja de entrada de Outlook cuando no se actualiza automáticamente?

¿La bandeja de entrada de Outlook no se actualiza automáticamente? Aprenda cómo puede actualizar automáticamente su bandeja de entrada de Outlook 365/2019/2016/2013 automáticamente.

Evite que aparezcan notificaciones de calendario de Outlook 365/2019/2016 para reuniones y citas

Evite que aparezcan notificaciones de calendario de Outlook 365/2019/2016 para reuniones y citas

Aprenda a deshabilitar los recordatorios y notificaciones de los calendarios de Outlook 2016/2019, tanto en Windows como en MAC.

¿Cómo enviar un correo electrónico en Outlook con VBA?

¿Cómo enviar un correo electrónico en Outlook con VBA?

Aprenda a escribir macros de Outlook para automatizar el envío de correo electrónico.

¿Por qué Outlook está fuera de línea o desconectado y cómo volver a conectar?

¿Por qué Outlook está fuera de línea o desconectado y cómo volver a conectar?

Aprenda a diagnosticar y solucionar diferentes problemas de desconexión del cliente de Microsoft Outlook en Windows 10.

Formularios de Outlook: ¿Cómo crear formularios rellenables en Microsoft Office 2016 / 2019?

Formularios de Outlook: ¿Cómo crear formularios rellenables en Microsoft Office 2016 / 2019?

Aprenda cómo puede diseñar y crear formularios de usuario personalizados de Outlook.

¿Cómo hacer que Microsoft Outlook funcione más rápido (versiones 2019/365/2016)?

¿Cómo hacer que Microsoft Outlook funcione más rápido (versiones 2019/365/2016)?

Obtenga información sobre cómo mejorar el rendimiento de Outlook.