Senden einer E-Mail, wenn ein Fälligkeitsdatum erreicht ist (Microsoft Excel)
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.