Hacer una operación resta con macro (VB) en Excel

Buenas tengo la siguiente macro y funciona perfectamente, básicamente lo que hace es: En el momento de abrir el archivo de excel envía correos a destinatarios ubicados en la sheet llamada "Task Status" si cumple la condición de que la fecha actual sea mayor o igual a la asignada.
Lo que necesito ahora es que me envíe mails también si se cumple la condición de que la fecha asignada es un dia menor que la actual, esto con el mismo body text. Para esto en la celda M4 he realizado la resta de fechas. Aquí esta la macro con la que alguno de ustedes me ayudo.

Muchas Gracias.

Private Sub Workbook_Open()
'envía mail
'Por.Dam
Sheets("Task Status").Select
ufila = Range("B" & Rows.Count).End(xlUp).Row
For i = 4 To ufila
If Cells(i, 7) <= Cells(i, 8) Then
Set parte1 = CreateObject("outlook.application")
Set parte2 = parte1.createitem(olmailitem)
para = Cells(i, 10) & ";" & Cells(i, 11) & ";" & Cells(i, 12)
parte2.to = para 'Destinatarios
'parte2.CC = "" 'Con copia
parte2.Subject = "Task Status" '"Asunto"
'"Cuerpo del mensaje"
parte2.body = "Hello " & Cells(i, 5) & _
" the request N. " & Cells(i, 9) & _
" with the title " & Cells(i, 2) & _
" was assigned to you by " & Cells(i, 6) & _
" and currently has reached due date. Your Manager is aware of this situation, please proceed with the task ASAP, Thanks."
'parte2.Attachments.Add Ruta & Archivo
parte2.send 'El correo se envía en automático
'parte2.display 'El correo se muestra
End If
Next
End Sub

1 respuesta

Respuesta
1

Cambia en la macro esta línea

If Cells(i, 7) <= Cells(i, 8) Then

Por esta

If Cells(i, 7) <= Cells(i, 8) - 1 Then

Saludos. Dam

Prueba y si te funciona.

Gracias Dam,

En realidad la macro como me ayuste en un principio funciona perfecto, lo que necesito es que me ayudes a agregar dentro de la misma macro esta condición que indicas. Necesito ambas dentro de la misma macro para que la original me indique que ya se ha vencido y esta otra condición envíe el mismo mail pero un dia antes del vencimiento. Por eso supongamos que yo hago la diferencia de fecha actual menos la fecha de entrega y el dia que se cumpla que falta un dia me envíe mails al igual que cuando se cumple la primera condición en la macro original, La diferencia la pongo en lo que para vos seria Cells(i, 12).

Muchas Gracias Dam,

Te cambio la macro

Private Sub Workbook_Open()
'envía mail
'Por.Dam
Sheets("Task Status").Select
ufila = Range("B" & Rows.Count).End(xlUp).Row
For i = 4 To ufila
'La fecha asignada es mayor a la fecha actual
If Cells(i, 7) <= Cells(i, 8) Then
    Set parte1 = CreateObject("outlook.application")
    Set parte2 = parte1.createitem(olmailitem)
    para = Cells(i, 10) & ";" & Cells(i, 11) & ";" & Cells(i, 12)
    parte2.to = para 'Destinatarios
    parte2.Subject = "Task Status" '"Asunto"
    parte2.body = "Hello " & Cells(i, 5) & _
    " the request N. " & Cells(i, 9) & _
    " with the title " & Cells(i, 2) & _
    " was assigned to you by " & Cells(i, 6) & _
    " And currently has reached due date. Your Manager is aware of this situation, please proceed with the task ASAP, Thanks."
    parte2.send 'El correo se envía en automático
End If
'La fecha asignada es igual a un día antes de la fecha actual
If Cells(i, 7) = Cells(i, 8) - 1 Then
    Set parte1 = CreateObject("outlook.application")
    Set parte2 = parte1.createitem(olmailitem)
    para = Cells(i, 10) & ";" & Cells(i, 11) & ";" & Cells(i, 12)
    parte2.to = para 'Destinatarios
    parte2.Subject = "Task Status" '"Asunto"
    parte2.body = "Hello " & Cells(i, 5) & _
    " the request N. " & Cells(i, 9) & _
    " with the title " & Cells(i, 2) & _
    " was assigned to you by " & Cells(i, 6) & _
    " And currently has reached due date. Your Manager is aware of this situation, please proceed with the task ASAP, Thanks."
    parte2.send 'El correo se envía en automático
End If
Next
End Sub

En la segunda parte del código pregunta si es igual a un día antes del día actual, puedes en esa parte cambiar el subject y el body.
Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas