ITCooky Recetas

Vamos a cocinar it cositas

¡Cómo enviar correos multiples desde Excel con contenido personalizado!

дата abril 28, 2020

Es una tarea atípica, pero sucede: tienes que enviar a cien usuarios sus cien nuevas contraseñas, y ¿cómo, a mano o algo así? Si tienes una suite de office con Excel y Outlook en Windows (pues yo no tengo), puedes hacerlo desde una hoja de Excel, ¡tengo una solucion, casi, fácil e elegante!

Primero debe activar Macros en Excel y agregar la pestaña Developer a ribben – encuentre cómo por simismo, aquí tengo una imagen sobre Macros

Se me olvido, cuando tenia Windows, tomar una captura de pantalla de la pestaña Developer, hay un icono de Macros a la izquierda, haga clic en él y agregue una macro como aca

Code de macros:

Sub Create_Mail_From_List()
' Works in Excel 2000, Excel 2002, Excel 2003, Excel 2007, Excel 2010, Outlook 2000, Outlook 2002, Outlook 2003, Outlook 2007, and Outlook 2010.
    Dim OutApp As Object
    Dim OutMail As Object
    Dim cell As Range
    
Dim strbody As String
For Each cell In Worksheets("Text").Range("E10:E12")
    strbody = strbody & cell.Value & vbNewLine
Next
    Application.ScreenUpdating = False
    Set OutApp = CreateObject("Outlook.Application")

    On Error GoTo cleanup
    For Each cell In Worksheets("Data").Columns("B").Cells.SpecialCells(xlCellTypeConstants)
        If cell.Value Like "?*@?*.?*" And _
           LCase(Worksheets("Data").Cells(cell.Row, "D").Value) = "yes" Then

            Set OutMail = OutApp.CreateItem(0)
            On Error Resume Next
            With OutMail
                .To = cell.Value
                .Subject = Worksheets("Text").Range("E6") & " " & Worksheets("Data").Cells(cell.Row, "C").Value & " " & Worksheets("Text").Range("G6")
               .Body = Worksheets("Text").Range("E7") & " " & Worksheets("Data").Cells(cell.Row, "C").Value & " " & Worksheets("Text").Range("G7") & vbNewLine & Worksheets("Text").Range("E8") & vbNewLine & Worksheets("Text").Range("E9") & " " & Worksheets("Data").Cells(cell.Row, "E").Value & " " & Worksheets("Text").Range("G9") & vbNewLine & strbody

                'You can also add files like this:
                '.Attachments.Add ("C:\test.txt")
                .Send  'Or use Display.
            End With
            On Error GoTo 0
            Set OutMail = Nothing
        End If
    Next cell

cleanup:
    Set OutApp = Nothing
    Application.ScreenUpdating = True
End Sub

Hacemos las pestañas, es importante cómo se llaman y en qué celdas estan

Primera pestaña Texto

Aquí en ciertos lugares se inserta el texto, que se insertará en la letra del mail.

Segunda pestaña Data

La pestaña más importante, en esta tabla de exel vlook recoge la información de otras pestañas, y resulta que Macros no sabe cómo cooperar con fórmulas en la tabla, ¡no puede tomar el resultado!

En la columna B , toma la ID de la columna A y busca el correo en la pestaña Contactos .

=VLOOKUP(A1; $Contacts.$A:$E;2;0)

IMPORTANTE: VLOOKUP solo puede buscar de izquierda a derecha. Toma lo que está a la izquierda y busca lo que está a la derecha

En la columna C , tomamos la ID de la columna A y buscamos el nombre en la pestaña Contactos .

=VLOOKUP(A1; $Contacts.$A:$E;3;0)

En la columna E , toma la ID de la columna A y busca la palabra en la pestaña Word_List .

=VLOOKUP(A1; $Word_List.$A:$B;2;0)

En la columna D si es yes , la macro envía un correo electrónico; de lo contrario, no se enviarán

Tercera pestaña Contacs

Detalles de contactos aquí

Cuarta pestaña Word_List

Aquí id y palabras

Cómo hacer que las macros de VBA funcionen con VLOOKUP en una tabla
Hasta ahora, no hay manera, ¡pero hay un truco vergonzoso que aún te permite cumplir tu plan!
En la pestaña Data , debe copiar toda la información e ingresarla inmediatamente como valores para que las fórmulas desaparezcan.

Después de eso, en la pestaña Developers , debe hacer clic en el segundo icono a la izquierda y ejecutar la macro. El resultado del trabajo se ve en una captura de pantalla al comienzo del artículo (sí, esta es una captura de pantalla real)


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *