Enviar correo automático de excel a outlook

Quiero crear una macro en donde se envíen correos automáticos 1 mes antes de que se cumpla cierta fecha. No tengo nada del código.

2 respuestas

Respuesta
2

H     o   l    a: 

Envíame un archivo con ejemplos reales, me explicas, cuál registro se debe enviar.

- A quién se envía.

- Con copia par quién

- Qué lleva en el asunto

- Qué lleva en el cuerpo de correo

- Si lleva algún archivo

- Se va a enviar por outlook

- En una imagen me pones cómo sería un correo enviado.


Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Melanie Pirce” y el título de esta pregunta.

- Se envía a [email protected]

- Con copia a [email protected]

- Asunto: VEHÍCULOS VENCIDOS

- Cuerpo: EL VEHÍCULO (aquí va patente de la fecha por vencer, ubicado en la columna A) vencerá en los próximos 30 días.

- Sin archivos

- Se envía por outlook

- Las fechas de los vehículos están en la columna B

Eso seria, espero tu respuesta :D

Que se envíe un correo así.

Así es el excel, que se envíe correo solo si esta justo en 30 días por vencer, no menos, ni más

 H    o  l a:

El manejo de fechas es algo delicado, empezando porque algunos meses tienen 31 días, por no mencionar febrero.

Entonces si quieres de la fecha de hoy 24 de marzo a 24 de abril, en realidad son 31 días.

Si quieres 30 días, entonces utiliza esta macro:

Sub Enviar_Correos()
'---
'   Por.Dante Amor
'---
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        If Date + 30 = Cells(i, "B").Value Then
            Set dam = CreateObject("outlook.application").createitem(0)
            '
            dam.To = "[email protected]"            'Destinatarios
            dam.Cc = "[email protected]"          'Con copia
            dam.Subject = "VEHÍCULOS VENCIDOS"          'Asunto
            dam.Body = "EL VEHÍCULO " & Cells(i, "A").Value & _
                       " vencerá en los próximos 30 días."
            dam.Send                                   'El correo se envía
            'dam.Display                                 'El correo se muestra
        End If
    Next
    MsgBox "Correos enviados", vbInformation, "SALUDOS"
End Sub

Pero si realmente quieres, si estamos a día 24, no importa le mes, el siguiente 24 enviará el correo, pero aquí el problema es que si estamos a 31 de mayo, no existe 31 de junio, entonces deberá ser 1 de julio, o si estamos a 30 de enero, tampoco existe 30 de febrero, entonces?

Si realmente quieres 31 días, entonces cambia el 30 en la macro por 31.

Realiza tus pruebas y me comentas.

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 click 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 click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Enviar_Correos
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

Pon la macro en un botón y ejecuta la macro cada que la necesites.

Si quieres ejecutar la macro de forma automática, al abrir el archivo, entonces agrega la siguiente macro en los eventos de Thisworkbook

Private Sub Workbook_Open()
    Call Enviar_Correos
End Sub

Instrucciones para poner la macro en los eventos ThisWorkbook

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a ThisWorkbook
  4. En el panel del lado derecho copia la macro

R ecuerda cambiar la valoración a la respuesta.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Y si quiero que se envíen también a los 15 días, como segundo recordatorio, ¿qué se tiene que agregar?

Algo como esto:

[code]Sub Enviar_Correos()
'---
'   Por.Dante Amor
'---
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        enviar = ""
        If Date + 30 = Cells(i, "B").Value Then
            enviar = 30
        End If
        If Date + 15 = Cells(i, "B").Value Then
            enviar = 15
        End If
        If enviar <> "" Then
            Set dam = CreateObject("outlook.application").createitem(0)
            '
            dam.To = "[email protected]"            'Destinatarios
            dam.Cc = "[email protected]"          'Con copia
            dam.Subject = "VEHÍCULOS VENCIDOS"          'Asunto
            dam.Body = "EL VEHÍCULO " & Cells(i, "A").Value & _
                       " vencerá en los próximos " & enviar & " días."
            dam.Send                                   'El correo se envía
            'dam.Display                                 'El correo se muestra
        End If
    Next
    MsgBox "Correos enviados", vbInformation, "

Tengo que configurar algo en el Outlook? la macro funciona bien, no tira errores, pero no llega el correo :(

¿Pero en outlook te aparece como enviado?

Pon varias fechas de ejemplo, para que estés segura que alguno de los registros se está enviando.

Respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas