Enviar correos con condición desde Outlook con Excel

Es muy común que tengas que enviar varios correos dependiendo de una condición, por ejemplo, puede ser un estatus.

Cuando tu lista de registros a revisar es considerablemente larga y quieres enviar todos esos correos con un solo clic, entonces es indispensable contar con una macro que nos ayude.

En el siguiente ejemplo te muestro como enviar un correo dependiendo si el estatus del registro está en “Pendiente”.

Suponiendo la siguiente base de datos:

enviar-correo-con-condicion-excel-1

La siguiente macro revisará cada registro y si en la columna “E”, el Estatus es igual a “Pendiente”, entonces enviará un correo personalizado al email que se encuentra en la columna “B”.

La macro es la siguiente:


Sub Enviar_Correos()
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
If Cells(i, "E").Value = "Pendiente" Then
Set dam = CreateObject("outlook.application").createitem(0)
dam.To = Cells(i, "B").Value 'Destinatarios
dam.Subject = "Recordatorio de seguimiento a pendientes"
dam.Body = "Estimado/a : " & Cells(i, "A").Value & vbCr & vbCr & _
"Le recordamos que tiene pendiente " & _
"el siguiente requerimiento : " & Cells(i, "C").Value & vbCr & vbCr & _
"Saludos cordiales"
dam.Send 'El correo se envía en automático
'dam.Display 'El correo se muestra
End If
Next
MsgBox "Correos enviados"
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale clic derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar clic derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Enviar Correos
  10. Aceptar.
  11. Guarda tu archivo como Excel habilitado para macros.
  12. Para ejecutar la macro presiona clic en la imagen.

El resultado será algo como esto:

enviar-correo-con-condicion-excel-2

Descargar archivo de Excel

Recomendados.

Compártalo en Facebook Compártalo en Twitter Compártalo en Whatsapp

Déjenos su opinión

5 Opiniones
  1. Juan Dice:

    Al volver a usar el boton vuelve y envia otra vez el correo existe una forma que valide los correos ya enviados para no volver a enviarlos

    Responder
    • solucion Dice:

      para que no se envien nuevamente se puede elaborar una columna donde indique que correos fueron enviados, le pones un condicional con esa columna que cuando no tenga ningún se envié el correo y le asigne un valos a esa celda ejemplo un 1 y asi no te leerá nuevamente esa linea

      Responder
  2. Carlos Dice:

    muchas gracias, me ha servido bastante.

    tengo una pregunta:

    en mi caso necesito que se envie una leyenda en espanol e ingles pero me marca error de compilacion en la parte de dam.body = ,

    te envio la macro que intento hacer.

    Private Sub Workbook_Open()

    fila = 7

    Do While Not IsEmpty(Cells(fila, “E”))

    If Cells(fila, “E”) < Date Then

    x = MsgBox("Hoy es: " & Date & Chr(13) & Chr(13) & "Solicitar Pago: " & Chr(13) & "Grupo: " & Cells(fila, "G") & "; " & "Importe: " & " $" & Cells(fila, "C") & "Pagos Pendientes")

    End If

    fila = fila + 1

    Loop

    End Sub

    Sub SiNoCancelar()

    Dim Pregunta As Integer

    Pregunta = MsgBox("Deseas continuar?", vbYesNoCancel + vbInformation, "Secrets & Now")

    Select Case Pregunta
    Case Is = 6
    MsgBox "Se enviara Correo"
    Case Is = 7

    MsgBox " No Se Enviara Correo"

    Exit Sub

    Case Else
    MsgBox "Cancelado"

    Exit Sub

    End Select

    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
    If Cells(i, "F").Value = "Vencido" Then
    Set dam = CreateObject("outlook.application").createitem(0)
    dam.To = Cells(i, "B").Value 'Destinatarios
    dam.Subject = " Deposito para Grupo " & Cells(i, "G").Value
    dam.body = "Estimado/a : " & Cells(i, "A").Value & vbCr & vbCr & _
    "Reciba un cordial saludo , estoy dando seguimiento el depósito . " & _
    vbNewLine & "Sería tan amable de compartirme el comprobante de la transferencia por $ " & Cells(i, "C").Value & " " & Cells(i, "D").Value & " " & "Agendado para el" & " " & Cells(i, "E").Value & ". " & vbCr & vbCr & _
    "Carlos Basabe" & vbNewLine & " Auditoria de Grupos " & "Hoteles ."

    "Dear: " & Cells(i, "A").Value & vbCr & vbCr & _
    "Greetings , I'm following the scheduled deposit for the program. " & _
    vbNewLine & "Could you please share me a copy of the deposit for $ " & Cells(i, "C").Value & " " & Cells(i, "D").Value & " " & "scheduled on" & " " & Cells(i, "E").Value & ". " & vbCr & vbCr & _
    "Carlos " & vbNewLine & " Groups Auditor " & " Hoteles."

    dam.Display 'dam.Send El correo se envía en automático
    'dam.Display 'El correo se muestra
    End If
    Next
    MsgBox "Correos enviados"
    End Sub

    Responder
  3. Ernesto Dice:

    Buenas tardes, la primer macro que ponen esta genial, pero en mi caso necesito generar un resumen de las ventas en las primeras filas del reporte, y el listado para envio de correos inicia en la fila A7, como puedo modificar la macro para que inicie desde ahi.
    muchas gracias

    Responder
    • Lyda Dice:

      Hola, Le asignas a la variable i el valor de 7 para que no inicie en la fila 2 sino en la 7.

      Saludos.

      Responder
En Gerencie.com está permitido opinar, criticar, discutir, controvertir, disentir, etc., pero debe hacerlo con respeto, sin insultar y sin ofender a otros.

Información legal aplicable para Colombia.