Email automático si se cumple la fecha

Solicito su colaboración con una macro en Excel que envíe un correo automático de saludo de cumpleaños.

Office 365 MS-Outlook 2016

Hoja1 fila 1 títulos

Columna A: número de identificación

Columna B: Nombre Completo de la persona

Columna C: Cargo en la Empresa

Columna D: dirección de correo

Columna E: Fecha de Ingreso

Columna F: Fecha de Cumpleaños dd/mm/aaaa

Hoja2

Celda A1 Tendría el Asunto

Celda B1 El Texto del Mensaje

Celda C1: =hoy()

La idea sería que cuando se abra el archivo, compare la fecha Hoja2 celda C1 con la fila en Hoja1 Columna F y envíe los correos a los destinatarios en los que la fecha coincida.

2 respuestas

Respuesta
1

[Hola

Como para comenzar sugiero leer este artículo:

Saludos]

Abraham Valencia

Respuesta
1

Hay muchos modos de enviar un correo.

Te dejo un código adaptación de un tema del capítulo 'Correos' de mi manual 500Macros. Está probada en versión Office 2016.

Sub EnviaCorreo()
'x Elsamatilde
Dim myOLApp
Dim myOLItem
Dim olMailItem
Dim midire As String, miasunto As String, mitexto As String
'datos del mail a enviar
Set ho2 = Sheets("Hoja2")
miasunto = ho2.[A1]
mitexto = ho2.[B1]       '(*Ver Tip 1)
'se recorre la hoja1 y se arma una cadena con los destinatarios que cumplan años hoy
Sheets("Hoja1").Select
[D2].Select
While Range("A" & ActiveCell.Row) <> ""
    If Range("F" & ActiveCell.Row) = ho2.[C1] And ActiveCell.Value <> "" Then
        cadena = cadena & ActiveCell.Value & ", "
    End If
    ActiveCell.Offset(1, 0).Select
Wend
If cadena = "" Then
    MsgBox "NO hay cumpleaños en el día de hoya"
    Exit Sub
End If
cadena = Left(cadena, Len(cadena) - 2)  'quitar última coma
'se crea un objeto Outlook, Mail
Set myOLApp = CreateObject("Outlook.Application")
Set myOLItem = myOLApp.CreateItem(olMailItem)
'se establecen los campos del mensaje
With myOLItem
.to = cadena        'campo A o Para
.Subject = miasunto 'campo Asunto
.body = mitexto      'cuerpo del mensaje
.display           ' mostrar. Send = enviar   (*ver Tip 2)
End With
'se liberan las variables creadas
Set myOLApp = Nothing: Set myOLItem = Nothing
End Sub

El resultado:

Leé los comentarios en la macro para ajustar detalles, como el Envío (Send) en lugar de mostrar (Display).

Solicito valores la respuesta atento a que te respondí en tiempo y forma.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas