Envío masivo de correos desde Excel

enviar correos desde excel usando macros

En esta ocasión se va a usar una macro escrita en Visual Basic que permita el envío de correos desde Excel. Esto viene bien para envío de correos masivos personalizados a través de Excel.

Antes de empezar a programar la macro, es necesario crear una tabla con las siguientes columnas: Email, Nombre, Apellidos, Asunto y Mensaje

Hoja de cálculo Excel para el envío automático de correo electónico
Hoja de cálculo Excel para el envío automático de correo electrónico

Para empezar a programar la macro, necesitamos incluir un botón, para que al pulsarlo envíe automáticamente correos a los destinatarios de la lista. Para insertar el botón, seleccionamos la pestaña Programador y dentro buscamos la opción: Insertar->Botón

Insertar botón en Excel para ejecutar una macro
Insertar botón para ejecutar macro VBA

Una vez insertado en la hoja, es necesario asociar la acción del botón al procedimiento que llevará a cabo la acción de enviar correos desde Excel.

Crear un procedimiento y asociarlo al botón.
Ponemos un nombre sendEmail y pulsamos Nuevo

A continuación, aparece el editor de visual basic que permite escribir el código implicado en el envío de correos masivos.

Sub sendEmail()
Dim i As Integer
Dim pagina As Worksheet
Set pagina = ActiveWorkbook.Worksheets("Hoja1")

Dim columnaEmail As Range
Set columnaEmail = Range("a2")
columnaEmail.Select
columnaEmail.Activate


Dim objOutlook As Object
Dim correo As Object

With Application
    .EnableEvents = False
    .ScreenUpdating = False
End With

On Error Resume Next
Set objOutlook = GetObject("", "Outlook.Application")
Err.Clear
If outapp Is Nothing Then Set outapp = CreateObject("Outlook.Application")
outapp.Visible = True
i = 2
Do While Not IsEmpty(ActiveCell)
    ActiveCell.Offset(i - 2, 0).Select
    'Crear el correo y mostrarlo
    Set correo = objOutlook.CreateItem(olMailItem)
    With correo
        .To = pagina.Cells(i, 1).Value
        .Subject = pagina.Cells(i, 4).Value
        .HTMLBody = pagina.Cells(i, 5).Value
        .Send
    End With
    i = i + 1
Loop


End Sub

Las líneas 3 y 4 definen la hoja de cálculo en uso, es decir, donde se encuentra la lista de correos que se usan para el envío masivo.

De la línea 6 a la línea 9 se ejecuta el código vba que coloca el foco en la celda desde la que vamos a empezar a enviar los correos.

De la línea 12 a la 24, ejecutamos el código que configura el objeto del correo. En nuestro caso, la aplicación cliente es el Outlook.

Por último, usando un bucle que compruebe si el correo está vacío, movemos la selección a la celda siguiente y componemos el correo con el resto de datos de la lista.

Deja un comentario

Tu dirección de correo electrónico no será publicada.