Enviar un correo desde VBA a clientes seleccionados en un listbox

Tengo un listbox con la propiedad multiselect, lo que quiero es poder enviar un correo electronico a las personas seleccionadas del listbox.

Los correos de dichas personas se encuentran en la columna 5

1 respuesta

Respuesta
2

Para enviar correos se requiere de la siguiente información:

1. ¿Tus datos están en un archivo de excel?

2. ¿El correo es por outlook?

3. ¿Qué se les va a enviar a cada persona?

4. ¿Qué va en el asunto del correo?

5. ¿Qué va en el cuerpo del correo?

6. ¿Cómo cargaste los datos al listbox?

Dante como estas,

Si me permites tu correo podria adjuntarte el proyecto en el que estoy trabajando.

1. Tus datos están en un archivo de excel?

R// Si, estan en un archivo de excel

2. El correo es por outlook?

R// Si, el correo se va a enviar por Outlook

3. Qué se les va a enviar a cada persona?

R// La idea es personalizar el mensaje de lo que se les va a enviar puesto que el correo varia constantemente.

bdy = "<p style='font-family:calibri;font-size:16'>" & "Hi<br><br>Could you please assist me with the following quotation?<br>FROM:<br>TO:<br>COMMODIDY:<br>CLASS:<br>N.PIECES:<br>DIMENSIONS:<br>Total Weight:<br> <br><br> THANKS!<br><br><br>Saludos/Regards, <br><br>Nombre<br>Cargo<br>Logistics Freight Solutions <br>Phone: 305 909 7870 ext: <br> E -mail: <br> web: www.lfs -inc.com" & "</p><img src='C:\Users\USER\Desktop\Jhony\Imagenes\FirmaLogo.PNG'>"

'Now add it into body
.HTMLBody = bdy

Esto es un ejemplo de lo que podria enviar programandolo con HTML

4. Qué va en el asunto del correo?

R// El asunto del correo es variable por lo tanto lo podriamos dejar en blanco.

.Subject = ""

5. Qué va en el cuerpo del correo?

R// El cuerpo del correo permanecera en blanco por que varia constantemente.

.Body = ""

6. Cómo cargaste los datos al listbox?

R// Private Sub UserForm_Initialize()

Range("A1").Select
ComboBox2.Value = "Zona"
TextBox2.Value = "*"
TextBox2.SetFocus

With Me
.ListBox2.ColumnCount = 5
.ListBox2.ColumnWidths = "70 pt;180 pt;180 pt;120 pt;180 pt"
.ComboBox2.List = Application.Transpose(ActiveCell.CurrentRegion.Resize(1).Value)
.ComboBox2.ListStyle = fmListStyleOption

End With

ListBox1.MultiSelect = 2

End Sub

Envíame tu archivo con un ejemplo de cómo quieres el correo.

No veo cómo se cargó el listbox.

Dime cómo ejecuto el formulario, qué datos pongo y en qué momento quieres que se envíe el correo.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Jhonatan Gonzalez” y el título de esta pregunta.

Buenos días Dante,

Acabe de enviarte el correo.

No llegó el correo, puedes revisar el correo:

[email protected]

Lo acabe de enviar de nuevo, verifica por favor

Te anexo el código para que pongas 2 botones en tu formulario. Un botón para enviar los correos del listbox "Destino" y otro botón para los correos del listbox "Origen".

Private Sub CommandButton2_Click()
'Por.Dante Amor
    'Enviar correo destino
    If ListBox2.ListCount = 0 Then
        MsgBox "No hay correos a enviar"
        Exit Sub
    End If
    '
    For i = 0 To ListBox2.ListCount - 1
        para = ListBox2.List(i, 4)
        correo para
    Next
End Sub
'
Private Sub CommandButton3_Click()
'Por.Dante Amor
    'Enviar correo Origen
    If ListBox1.ListCount = 0 Then
        MsgBox "No hay correos a enviar"
        Exit Sub
    End If
    '
    For i = 0 To ListBox1.ListCount - 1
        para = ListBox1.List(i, 4)
        correo para
    Next
End Sub
'
Sub correo(para)
'Por.Dante Amor
    nombre = "Jhonatan González Ricaurte"
    cargo = "Pricing specialist"
    ext = "238"
    e_mail = "[email protected]"
    '
    bdy = "<p style='font-family:calibri;font-size:16'>" & _
          "Hi<br>" & _
          "<br>Could you please assist me with the following quotation?" & _
          "<br>FROM:" & _
          "<br>TO:" & _
          "<br>COMMODIDY:" & _
          "<br>CLASS:" & _
          "<br>N.PIECES:" & _
          "<br>DIMENSIONS:" & _
          "<br>Total Weight:<br> <br>" & _
          "<br>THANKS!<br><br>" & _
          "<br>Saludos/Regards, <br>" & _
          "<br>" & nombre & _
          "<br>" & cargo & _
          "<br>Logistics Freight Solutions " & _
          "<br>Phone: 305 909 7870 ext: " & ext & _
          "<br>E-mail: " & e_mail & _
          "<br>web: www.lfs -inc.com" & _
          "</p><img src='C:\Users\USER\Desktop\Jhony\Imagenes\FirmaLogo.PNG'>"
    '
    Set dam = CreateObject("outlook.application").createitem(0)
    With dam
        .To = para
        .Subject = ""
        .BodyFormat = 2
        .HTMLBody = bdy
        .Display
    End With
    Set dam = Nothing
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Muchas Gracias,

Exactamente lo que estaba buscando !!!

Perdon Dante,

Si quisiera que automaticamente se envie el correo por si solo, que codigo deberia agregar?

¿Pero en qué momento quieres que se envíe? Cuando abres el archivo, cuando abres el formulario, ¿cuándo presionas un checkbox?

Crea una nueva pregunta y me explicas en qué momento quieres el envío.

Cuando le das click al boton de enviar correo en origen y en destino, veo que el crea los correos pero no los envia automaticamente.

Ah es cierto, se me olvidó comentarte, disculpa, tienes que cambiar en la macro esto:

. Display

Por esto:

. Send

Lo pongo en .Display para hacer pruebas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas