Es muy común que tengas que enviar varios correos dependiendo de una condición, por ejemplo, puede ser un estatus, lo que se puede condicionar desde Excel para ser enviados desde Outlook.
Envío de correos desde Excel.
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:
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
- Abre tu libro de Excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- En el menú elige Insertar / Módulo
- En el panel del lado derecho copia la macro
- Ahora para crear un botón, puedes hacer lo siguiente:
- Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
- Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
- 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”
- Vuelve a presionar clic derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Enviar Correos
- Aceptar.
- Guarda tu archivo como Excel habilitado para macros.
- Para ejecutar la macro presiona clic en la imagen.
El resultado será algo como esto:
Hola, buenas tardes, si en el ejemplo que ponen en la base de datos el nombre de Daniel apareciera 2 ó mas veces con diferentes conceptos pendientes ( factura, nota, pedido, etc. ) ¿Cómo se podría enviar todo en un solo correo? ósea que el resultado fuera algo como esto
Para: [email protected]
Asunto: requerimiento de seguimiento a pendientes
Estimado/a: Daniel
Le recordamos que tiene pendiente el siguiente requerimiento:
FACTURA
PEDIDO
NOTA
Saludos cordiales
buen dia
hola USTEDES VENDEN FORMATOS PARA LIQUIDCIONES y prestaciones scoiales
[email protected]
buen dia, ustedes venden formatos para liquidaciones de prestacion social y vacaciones
[email protected]
Gracias, Me ha funcionado, perfecto.
Alguien sabe como en ese correo puedo adjuntar una imagen?
Hola, cómo se modificaría el código para enviar el correo con copia a otros emails?
Agrego las columnas correspondientes a los correos de las personas a quien se le enviará copia, pero en el código cómo lo podría realizar?
Saludos
QUIERO REENVIAR CORREOS ELECTRONICOS QUE INGRESAN A MI CUENTA DE FORMA ALEATORIA A 3 CORREOS DISTINTOS , AGUN AYUDA
No comprendemos exactamente cómo seleccionaría los correos y los destinatarios, pero aquí sugerimos una modificación de la macro original:
Dim destinatarios() As Variant
Dim i As Integer
Dim index As Integer
Dim dam As Object
Dim cantidadDestinatarios As Integer
Dim j As Integer
‘ Definir la cantidad de destinatarios deseados (en este caso, 3)
cantidadDestinatarios = 3
‘ Definir los destinatarios
destinatarios = Range(“B2:B” & Range(“B” & Rows.Count).End(xlUp).Row).Value
‘ Semilla para generar números aleatorios
Randomize
‘ Bucle principal para enviar correos
For i = 2 To Range(“A” & Rows.Count).End(xlUp).Row
If Cells(i, “E”).Value = “Pendiente” Then
‘ Bucle para enviar a la cantidad de destinatarios especificada
For j = 1 To cantidadDestinatarios
‘ Generar índice aleatorio
index = Int((UBound(destinatarios) – LBound(destinatarios) + 1) * Rnd + LBound(destinatarios))
‘ Crear objeto de aplicación Outlook y correo
Set dam = CreateObject(“outlook.application”).CreateItem(0)
‘ Asignar destinatario aleatorio
dam.To = destinatarios(index, 1)
‘ Configurar el resto del correo
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”
‘ Enviar el correo
dam.Send
Next j
End If
Next i
‘ Mensaje de confirmación
MsgBox “Correos enviados”
End Sub