Tenía la tarea de enviar correos electrónicos a los usuarios que figuran en una hoja de cálculo de Excel. Cada correo electrónico tenía que contener alguna información individual para cada usuario. Traté de hacerlo usando una macro de VBA en Excel que enviaba correos electrónicos desde un perfil de Outlook configurado en la computadora. Aquí está mi solución.

Supongamos que tiene un archivo de Excel con las siguientes columnas:

Email | Full Name | Last Password Change Date | Account status

Mi tarea es enviar un correo electrónico de este tipo desde esta plantilla a cada usuario de la lista:

Sujeto: El estado de su cuenta en el dominio woshub.com
Cuerpo: Estimado% FullUsername%:
Su cuenta en el dominio woshub.com está en% status% state
La fecha y hora del último cambio de contraseña es% pwdchange%

Crea una nueva macro: Vista -> Macros. Especifique el nombre de la macro (enviar correo electrónico) y haga clic en Crear:

Copie y pegue el siguiente código en el editor de VBA que aparece (le hice comentarios relevantes). Para automatizar el envío de correos electrónicos, usaré la función CreateObject ("Outlook.Application") que permite crear y usar un objeto de Outlook dentro de los scripts de VBA.

Importante. El perfil de Outlook debe configurarse en la computadora emisora. Este buzón (y dirección de correo electrónico) se utilizará para enviar correos electrónicos.

Sub send_email()
Dim olApp As Object
Dim olMailItm As Object
Dim iCounter As Integer
Dim Dest As Variant
Dim SDest As String
' Subject
strSubj = "Your account status on woshub.com domain"
On Error GoTo dbg
' Create a new Outlook object
Set olApp = CreateObject("Outlook.Application")
For iCounter = 1 To WorksheetFunction.CountA(Columns(1))
' Create a new item (email) in Outlook
Set olMailItm = olApp.CreateItem(0)
strBody = ""
useremail = Cells(iCounter, 1).Value
FullUsername = Cells(iCounter, 2).Value
Status = Cells(iCounter, 4).Value
pwdchange = Cells(iCounter, 3).Value
'Make the body of an email
strBody = "Dear " & FullUsername & vbCrLf
strBody = strBody & " Your account in woshub.com domain is in" & Status & “ state” & vbCrLf
strBody = strBody & "The date and time of the last password change is" & pwdchange & vbCrLf
olMailItm.To = useremail
olMailItm.Subject = strSubj
olMailItm.BodyFormat = 1
' 1 – text format of an email, 2 -  HTML format
olMailItm.Body = strBody
olMailItm.Send
Set olMailItm = Nothing
Next iCounter
Set olApp = Nothing
dbg:
'Display errors, if any
If Err.Description <> "" Then MsgBox Err.Description
End Sub

macro vba para enviar un correo electrónico a la lista de destinatarios en la hoja de cálculo de Excel

Guarde este archivo de Excel como.xlsm (un formato de libro de Excel que admite macros). Para enviar correos electrónicos, seleccione el procedimiento creado (la macro) y haga clic en Ejecutar.

ejecutar macro vba

La macro recorrerá todas las filas de la hoja de cálculo de Excel una por una, generará y enviará un correo electrónico a cada destinatario de la lista.

Recomendado para ti