Envio de email desde excell, 15 dias antes de que cumpla la fecha.

Tengo una tabla de formación con varios trabajadores y varias formaciones.

Las fechas en las que cumple la formación están en el rango de excel K7:CI51.

Los emails del para, en la hoja "emails" (A2, A3), Los emails de CC, en la hoja "email" (B2, B3), Los nombres de los trabajadores de las celdas (K4 a CI4), Los apellidos de los trabajadores de las celdas (K5 a CI5) y los cursos de la (B7 a B50).

Me gustaría que quince días antes se enviara un email en el que aparezca el nombre del trabajador, los apellidos, el curso que le caduca y la fecha.

1 Respuesta

Respuesta
1

Te invito a SUSCRIBIRTE a mi canal de YouTube:

Excel y Macros

Ahí encontrarás más sobre Excel y Macros:

https://www.youtube.com/channel/UCs644-v3ti4SF7zE_bt_YXA 

Comparte los enlaces en tus redes sociales.


Ho la Sara y bienvenida a TodoExpertos!

Veo que tienes la información de esta manera:

Pero yo te recomiendo que la trabajes de esta manera, es mejor y más práctico. Normalmente pones los trabajadores en filas y sus conceptos, como en este caso los cursos, en columnas.


¿En A2 y A3 solamente tienes un correo en cada celda?

¿Entonces no se le enviaría un email a cada trabajador?


Muchísimas gracias por responder, no, solo se me enviaría a mi y a dos personas más para darnos el aviso, de que tienen cursos a punto de caducar. :)

Prueba lo siguiente y me comentas

Sub Enviar_Correos_Cursos()
'Por Dante Amor
  'Envio de email desde Excel, 15 días antes de que cumpla la fecha.
  Dim i As Long, j As Long
  Dim cuerpo As String, sep As String
  Dim dam As Object
  '
  sep = " - "
  With Sheets("Hoja1")
    cuerpo = "NOMBRE" & sep & "APELLIDO" & sep & "CURSO" & sep & "FECHA" & vbCr
    For j = Columns("K").Column To .Cells(4, Columns.Count).End(1).Column
      For i = 7 To .Range("B" & Rows.Count).End(3).Row
        If .Cells(i, j).Value <> "" Then
          If .Cells(i, j).Value - 15 = Date Then
            cuerpo = cuerpo & .Cells(4, "K").Value & sep & .Cells(5, "K").Value & sep & _
              .Cells(i, "B").Value & sep & .Cells(i, j).Value & vbCr
          End If
        End If
      Next
    Next
  End With
  '
  Set dam = CreateObject("outlook.application").createitem(0)
  With Sheets("emails")
    dam.To = .Range("A2").Value & "; " & .Range("A3").Value 'Destinatarios
    dam.Cc = .Range("B2").Value & "; " & .Range("B3").Value 'Con copia
    dam.Subject = "Lista de cursos a caducar"
    dam.body = cuerpo
    'dam.send 'El correo se envía en automático
    dam.display 'El correo se muestra
  End With
End Sub


Comparte los enlaces en tus redes sociales.

Sal u dos

Hola, he intentado hacerlo y me aparece el email pero indica literal "nombre", "apellidos"... pero no los datos.

😔, aun así gracias.

Puedes poner imágenes de tu pantalla. Y del correo generado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas