En diversas ocasiones solemos estar ante la necesidad de enviar correos masivos a diferentes direcciones, no con el fin de hacer Spam sino como parte de algún trabajo en el que nos encontremos.
Para enviar correos masivos se puede contar con varias herramientas (software) existentes, y también podemos realizar el envío de estos correos masivos empleando Macros en Excel.
Por ejemplo, en el área de compras a proveedores o en el área de ventas, a clientes. Siempre se están mandando correos para hacer seguimiento a los pedidos de estos. En la figura 1 se muestra una base de datos de proveedores y pedidos en el área de compras.
Paso 1
Crear la base de datos con: Correo, Destinatario, Datos específicos como fechas, saldos, etc.
Paso 2
Realizar la programación del código para automatizar el enviado de correos.
El ejemplo correspondiente se puede descargar del siguiente enlace: Enviar correos masivos VBA
Paso 3
Finalmente debemos activar la aplicación de Outlook, para que se vincule con Excel.
En el editor de VBA debemos añadir las librerías necesarias para que se puedan enviar correos masivos por medio del Outlook.
Herramientas > Referencias > Check en las aplicaciones de Outlook
Por: Jesus López.
En los siguientes artículos se encuentran otros ejemplos que te pueden servir para el envío de correos masivos con macros.
- Macro para insertar imagen en correo
- ¿Cómo enviar correos masivos?
- Enviar correo con html
- Enviar por correo una hoja como archivo adjunto
- Enviar libro activo como adjunto en correo
- Enviar un correo con un enlace
- Enviar un correo a una lista de contactos
- Enviar un email con enlace
- Enviar un rango de celdas como adjunto en correo
- Enviar correo electrónico a una lista de contactos (Macros - VBA)
- Enviar archivo adjunto en Email con VBA
08/08/2019 a las 1:07 pm
Hola, buen día!
Muchas gracias, llevaba batallando un poco con el código y el tuyo me sirvió de guía. Ahora necesito agregar formato al texto, tanto a las variables A, B, C y al cuerpo del mensaje MSG = "xxxx"
Como le puedo hacer, tengo que agregar un htmlbody = ???
Sub RenovaciónPoliza()
Dim Outlookapp As Outlook.Application
Dim MItem As Outlook.MailItem
Dim CeldaCorreo As Range
Dim Asunto As String
Dim Correo As String
Dim Destinatario As String
Dim msg As String
'
Set Outlookapp = New Outlook.Application
'
'recorremos la columna email
'
For Each CeldaCorreo In Range("d3:d6")
'
'asignamos valor a las variables
'
Asunto = "Recordatorio del terminó de vigencia de su Póliza " & CeldaCorreo.Offset(0, -3) & ", "
Destinatario = CeldaCorreo.Offset(0, -1).Value
Correo = CeldaCorreo.Value
fechavencimiento = Format(CeldaCorreo.Offset(0, 1).Value, " dd/mmm/yyyy")
dias = CeldaCorreo.Offset(0, 4).Value
If dias < 0 Then
A = " su póliza "
B = " con vigencia al "
C = " está a punto de vencer, por lo que solicitamos pueda ponerse en comunicación con nosotros para la renovación de su póliza y su vehículo no quede desprotegido y siga disfrutando de los mejores beneficios que le otorga Grupo " & CeldaCorreo.Offset(0, 5) & vbNewLine
D = "."
E = "."
Else
A = " se realizó la renovación de su seguro y su nuevo número de póliza es "
B = " en cobertura amplia, con vigencia del "
C = " al " & CeldaCorreo.Offset(0, 2) & ". La prima total a pagar es de $" & CeldaCorreo.Offset(0, -2)
E = " IVA incluido. "
End If
'
'cuerpo del mensaje
'
msg = "Estimado asegurado " & Destinatario & vbNewLine
msg = msg & "Agradecemos su lealtad y preferencia, le informamos que" & A & CeldaCorreo.Offset(0, -3) & B & CeldaCorreo.Offset(0, 1) & C & E & vbNewLine
msg = msg & "Atentamente," & vbNewLine
'
'realizamos la orden de enviar el correo segun las variables descritas
'
Set MItem = Outlookapp.createitem(olmailitem)
With MItem
.to = Correo
.Subject = Asunto
.body = msg
.send
'
End With
'
Next
'
End Sub
16/04/2020 a las 9:38 am
Gracias por la propuesta, pero no sirve, envía solo un correo a la primera dirección, cuando entra al ciclo solo evalúa un valor y se sale.
Saludos.
10/02/2021 a las 2:52 pm
Buenas tardes:
Siguiendo sus instrucciones he creado la siguiente macro, pero no funciona me da error de compilacion.
¿podria indicame si he hecho algo mal?
Sub EnviarEmail()
Dim Outlookapp As Outlook.Application
Dim MItem As Outlook.MailItem
Dim cell As Range
Dim Asunto As String
Dim Correo As String
Dim Destinatario As String
Dim CV As String
Dim DNI As String
Dim SEGURIDADSOCIAL As String
Dim NUMEROCUENTA As String
Dim DELITOSSEXUALES As String
Dim Msg As String
'
Set Outlookapp = New Outlook.Application
'
'Recorremos la columna Email
'
For Each cell In Range("Q17:Q1000")
'
'Asignamos valor a las variables
'
Asunto = "URGE.Documentacion pendiente"
Trabajador = cell.Offset(0, -1).Value
Correo = cell.Value
CV = Format(cell.Offset(0, 1).Value)
DNI = Format(cell.Offset(0, 2).Value)
SEGURIDADSOCIAL = Format(cell.Offset(0, 3).Value)
NUMEROCUENTA = Format(cell.Offset(0, 4).Value)
DELITOSSEXUALES = Format(cell.Offset(0, 5).Value)
'
'Cuerpo del mensaje
'
Msg = "Buenos días " & Trabajador & vbNewLine & vbNewLine
Msg = Msg & "Queremos informarle que tiene pendiente de envío los siguientes documentos:"
Msg = Msg & CV & "." & vbNewLine & vbNewLine
Msg = Msg & DNI & "." & vbNewLine & vbNewLine
Msg = Msg & SEGURIDADSOCIAL & "." & vbNewLine & vbNewLine
Msg = Msg & NUMEROCUENTA & "." & vbNewLine & vbNewLine
Msg = Msg & DELITOSSEXUALES & "." & vbNewLine & vbNewLine
Msg = Msg & "Debe remitirlos urgentemente o no podrá seguir trabajando al ser documentació obligatoria."
Msg = Msg & "Muchas Gracias" & vbNewLine
'
Set MItem = Outlookapp.CreateItem(olMailItem)
With MItem
.To = Correo
.Subject = Asunto
.Body = Msg
.Send
'
End With
'
Next