Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

¿Cómo enviar correos masivos?

| 3 comentarios

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.

Enviar correos masivos VBA 01

Paso 2

Realizar la programación del código para automatizar el enviado de correos.

Enviar correos masivos VBA

 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

Enviar correos masivos VBA

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.

  1. Macro para insertar imagen en correo
  2. ¿Cómo enviar correos masivos?
  3. Enviar correo con html
  4. Enviar por correo una hoja como archivo adjunto
  5. Enviar libro activo como adjunto en correo
  6. Enviar un correo con un enlace
  7. Enviar un correo a una lista de contactos
  8. Enviar un email con enlace
  9. Enviar un rango de celdas como adjunto en correo
  10. Enviar correo electrónico a una lista de contactos (Macros - VBA)
  11. Enviar archivo adjunto en Email con VBA

 

3 comentarios

  1. 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

  2. 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.

  3. 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

Deja una respuesta

Los campos requeridos estan marcados con *.