Beitrag aus SmartTools Outlook Weekly
VBA-Lösung für sofortiges Senden trotz Regel mit zeitverzögertem E-Mail-Versand
Outlook 365 2024 2021 2019 2016 2013
FRAGE Sie hatten einen Tipp veröffentlicht, in dem es um einen zeitverzögerten E-Mail-Versand mit Hilfe einer Regel ging, und dazu bereits einen Nachtrag herausgebracht. Darin beschreiben Sie, wie eine E-Mail trotz verzögerter Zustellung sofort gesendet werden kann. Mich stört daran ein wenig, dass ich die im Postausgang abgelegte E-Mail erst öffnen und dann manuell verschiedene Einstellungen vornehmen muss, um den sofortigen Versand auszulösen. Lässt sich nicht ein Makro entwickeln, das diese Einstellungen setzt. Idealerweise muss ich für den Sofortversand im Postausgang nur die gewünschte E-Mail markieren und das Makro ausführen. Können Sie dafür eine Lösung anbieten?
T. Becker
ANTWORT Sie haben recht. Komfortabel ist es nicht, die Einstellungen für den sofortigen Versand und zum Aussetzen der Regelausführung jedes Mal manuell setzen zu müssen. Mit einem Makro lassen sich die Schritte tatsächlich automatisieren.
Bevor es an die Details geht, hier noch einmal kurz die Situationsbeschreibung: Sie haben eine Regel erstellt, die alle ausgehenden E-Mails um eine gewisse Anzahl an Minuten zeitverzögert sendet. So haben Sie notfalls Zeit, einen vergessenen Anhang nachträglich anzufügen oder einen Empfänger nachzutragen. Um eine Nachricht doch einmal sofort zu senden, müssen Sie in der Regel eine Ausnahme definieren – etwa nach dem Prinzip: Alle E-Mails mit der Priorität "Hoch" von der Regel ausnehmen und ohne Verzögerung senden.
Falls eine E-Mail bereits von der Regel verarbeitet wurde und im Postausgang auf den Versand wartet, müssen Sie diese E-Mail manuell so bearbeiten, dass die Regelausführung ausgesetzt wird. Sie müssen also die Übermittlungsverzögerung ausschalten und die Priorität auf "Hoch" setzen, bevor Sie wieder auf Senden klicken.
Mit der folgenden Makrolösung müssen Sie eine E-Mail nur noch im Postausgang markieren und ein Makro starten, um sie sofort zu senden. Dafür binden Sie den VBA-Code folgendermaßen in Outlook ein:
- Wechseln Sie in den Outlook-Posteingang und drücken Sie Alt + F8, um das Dialogfenster Makros zu öffnen.
- Geben Sie im Feld Makroname folgende Bezeichnung ein:
SofortSenden - Klicken Sie auf die Schaltfläche Erstellen.
- Sie gelangen in ein Codefenster der Entwicklungsumgebung, in dem das Gerüst der Prozedur "SofortSenden" angezeigt wird. Vervollständigen Sie das Prozedurgerüst wie folgt:
Sub SofortSenden()
Dim olApp As Outlook.Application
Dim aktiverExplorer As Outlook.Explorer
Dim aktiverOrdner As Outlook.Folder
Dim postausgangOrdner As Outlook.Folder
Dim aktivesKonto As Outlook.Store
Dim markierteMail As Outlook.MailItem
On Error GoTo SofortSenden_Error
Set olApp = Outlook.Application
Set aktiverExplorer = olApp.ActiveExplorer
Set aktiverOrdner = aktiverExplorer.CurrentFolder
Set aktivesKonto = aktiverOrdner.Store
Set postausgangOrdner = aktivesKonto.GetDefaultFolder(olFolderOutbox)
If aktiverOrdner.EntryID = postausgangOrdner.EntryID Then
Set markierteMail = aktiverExplorer.Selection.Item(1)
With markierteMail
.DeferredDeliveryTime = DateSerial(4501, 1, 1)
.Importance = olImportanceHigh
.Send
End With
Else
MsgBox _
Prompt:="Wechseln Sie bitte zuerst in den Ordner 'Postausgang'.", _
Buttons:=vbInformation, _
Title:="Nachricht sofort senden"
End If
SofortSenden_End:
Set markierteMail = Nothing
Set postausgangOrdner = Nothing
Set aktivesKonto = Nothing
Set aktiverOrdner = Nothing
Set olApp = Nothing
Exit Sub
SofortSenden_Error:
MsgBox Prompt:="Senden fehlgeschlagen!" & String(2, vbCrLf) & _
"(" & Err.Number & ") - " & Err.Description, _
Buttons:=vbCritical, _
Title:="Nachricht sofort senden"
Resume SofortSenden_End
End Sub
- Wählen Sie Datei-VbaProject.OTM speichern an. – Falls Outlook Sie später beim Beenden fragt, ob das VBA-Projekt gespeichert werden soll, bestätigen Sie den Speichervorgang aber sicherheitshalber noch einmal mit Ja.
- Wählen Sie Datei-Schließen und zurück zu Microsoft Outlook an.
Eine E-Mail, die von der Regel zum zeitverzögerten Versand im Postausgang abgelegt wurde, können Sie nun mit wenigen Klicks sofort senden:
- Wechseln Sie in den Postausgang.
- Markieren Sie die E-Mail, die Sie sofort senden wollen.
- Drücken Sie Alt + F8, um das Dialogfenster Makros zu öffnen.
- Im Listenfeld markieren Sie den Makronamen "SofortSenden".

- Dann klicken Sie auf die Schaltfläche Ausführen.
Noch komfortabler geht es, wenn Sie das Makro in die Symbolleiste für den Schnellzugriff integrieren. Dann genügt das Markieren der E-Mail und ein Mausklick auf das neue Symbol.
Den Makrocode können Sie unverändert lassen, wenn Sie als Ausnahmekriterium der Regel die Priorität "Hoch" eingestellt haben. Die folgenden Codezeilen nehmen dann alle Einstellungen für den sofortigen Versand vor:
With markierteMail
.DeferredDeliveryTime = DateSerial(4501, 1, 1)
.Importance = olImportanceHigh
.Send
End With
Die Übermittlungsverzögerung wird ausgeschaltet, wofür das Datum 01.01.4501 als Übermittlungszeit gesetzt wird, was in Outlook so viel wie "kein Datum" bedeutet. Außerdem wird der Importance-Eigenschaft (Wichtigkeit/Priorität) der Wert "olImportanceHigh" zugewiesen.
Falls Sie in der Regel ein anderes Ausnahmekriterium verwenden, müssten Sie den Code an dieser Stelle entsprechend anpassen. Der Rest des Codes prüft lediglich, ob Sie sich tatsächlich im Postausgang Ihres E-Mail-Kontos befinden, damit nicht versehentlich irgendwelche anderen Nachrichten verschickt werden.