Изображение электронной таблицы
Я пытаюсь настроить уведомления по электронной почте для отправки людям в моем отделе, когда наступает срок в течение 7 дней. В настоящее время проблема заключается в том, что всякий раз, когда я запускаю модуль, он настраивает электронную почту для всего, что находится до срока оплаты. Однако я хочу настроить электронную почту для проектов, которые должны быть выполнены в течение 7 дней. Таким образом, если срок выполнения проекта составляет 10 дней, я не хочу, чтобы письмо отправлялось, тот же проект, где он уже просрочен.
Кроме того, я хотел бы, чтобы электронные письма были отправлены лицу, ответственному за проект, но не если они указали, что они уже завершили проект в колонке I.
У меня есть имена проектов в столбце B, электронные письма в столбце F, сроки выполнения в столбце H, а в столбце K будет отображаться «Отправлено по электронной почте», если скрипт отправит электронное письмо. Если электронное письмо уже было отправлено ранее, оно пропустит эту строку.
Private Sub Workbook_Open()
Dim OutApp As Object
Dim OutMail As Object
Dim lLastRow As Long
Dim lRow As Long
Dim sSendTo As String
Dim sSendCC As String
Dim sSendBCC As String
Dim sSubject As String
Dim sTemp As String
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
' Change the following as needed
sSendCC = ""
sSendBCC = ""
sSubject = "Project Log Due Date Reached"
lLastRow = Cells(Rows.Count, 3).End(xlUp).Row
For lRow = 3 To lLastRow
If Cells(lRow, 11) <> "Email Sent" Then
If Cells(lRow, 8) - Date <= 7 And Cells(1Row, 8) - Date > 0 Then
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = Cells(1Row, 6)
If sSendCC > "" Then .CC = sSendCC
If sSendBCC > "" Then .BCC = sSendBCC
.Subject = sSubject
sTemp = "Hello!" & vbCrLf & vbCrLf
sTemp = sTemp & "The due date has been reached "
sTemp = sTemp & "for this project:" & vbCrLf & vbCrLf
' Assumes project name is in column B
sTemp = sTemp & " " & Cells(lRow, 2)
sTemp = sTemp & "Please take the appropriate"
sTemp = sTemp & "action." & vbCrLf & vbCrLf
sTemp = sTemp & "Thank you!" & vbCrLf
.Body = sTemp
' Change the following to .Send if you want to
' send the message without reviewing first
.Send
End With
Set OutMail = Nothing
Cells(lRow, 11) = "Email Sent"
Cells(lRow, 12) = "E-mail sent on: " & Now()
End If
End If
Next lRow
Set OutApp = Nothing
End Sub