Domenic verfügt über ein Arbeitsblatt mit den Fälligkeitsterminen für Projekte in Spalte E.

Er weiß, dass er die bedingte Formatierung verwenden kann, um anzuzeigen, wann das Fälligkeitsdatum erreicht ist (wenn es mit dem heutigen Datum übereinstimmt), aber er benötigt wirklich eine E-Mail, die gesendet wird, wenn das Fälligkeitsdatum erreicht ist. Er fragt sich, ob es in Excel eine Möglichkeit gibt, dies zu tun.

Tatsächlich gibt es eine Möglichkeit, dies zu tun, vorausgesetzt, es macht Ihnen nichts aus, ein Makro zu verwenden. Darüber hinaus müssen Sie die E-Mail über Outlook senden, mit dem VBA problemlos kommunizieren kann. (Leider kann VBA nicht einfach verwendet werden, um eine Verbindung mit anderen E-Mail-Clients herzustellen.)

Hier ist beispielsweise ein Makro, das ausgeführt wird, wenn Ihre Arbeitsmappe geöffnet wird. Es überprüft automatisch jede Zeile in einem Arbeitsblatt und gibt dabei zwei Dinge an: das Fälligkeitsdatum in Spalte E und einen „Flag-Wert“ in Spalte F. (Dieser Flag-Wert wird vom Makro festgelegt. Wenn Spalte F den Buchstaben „S“ enthält, „Dann geht das Makro davon aus, dass zuvor eine E-Mail gesendet wurde.)

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     sSendTo = "[email protected]"

sSendCC = ""

sSendBCC = ""

sSubject = "Due date reached"



lLastRow = Cells(Rows.Count, 3).End(xlUp).Row     For lRow = 2 To lLastRow         If Cells(lRow, 6) <> "S" Then             If Cells(lRow, 5) <= Date Then                 Set OutMail = OutApp.CreateItem(0)



On Error Resume Next                 With OutMail                     .To = sSendTo                     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                     .Display                 End With                 Set OutMail = Nothing

Cells(lRow, 6) = "S"

Cells(lRow, 7) = "E-mail sent on: " & Now()

End If         End If     Next lRow     Set OutApp = Nothing End Sub

Wenn das Makro ausgeführt wird (erneut, wenn die Arbeitsmappe zum ersten Mal geöffnet wird), überprüft es jede Zeile im Arbeitsblatt, um festzustellen, ob in Spalte F ein „S“ vorhanden ist.

Wenn nicht, wird geprüft, ob das Datum in Spalte E dem heutigen Datum entspricht. Wenn dies der Fall ist, stellt der Code eine E-Mail-Nachricht zusammen (die Sie nach Bedarf ändern können), die gesendet werden soll. Die E-Mail wird angezeigt und Sie können auf die Schaltfläche Senden klicken, nachdem Sie die gewünschten Änderungen vorgenommen haben.

Zu diesem Zeitpunkt wird das Arbeitsblatt aktualisiert, indem das Kennzeichen „S“ in Spalte F und das Datum, an dem die E-Mail gesendet wurde, in Spalte G platziert werden.

Beachten Sie, dass das Makro davon ausgeht, dass sich der Name des Projekts in Spalte B befindet.

Diese Informationen werden verwendet, um die Nachricht zusammenzustellen, die per E-Mail gesendet wird.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (474) gilt für Microsoft Excel 2007, 2010, 2013 und 2016.