VBA-Fehlerbehebung: Mails hängen im Postausgang von Outlook
Schritt-für-Schritt-Anleitung
Um das Problem zu beheben, dass E-Mails im Postausgang hängen bleiben, kannst Du den folgenden VBA-Code verwenden. Dieser prüft, ob Outlook bereits geöffnet ist und öffnet es gegebenenfalls:
Sub EMailVersendenOutlook()
Dim obNachricht As Object
Dim obMail As Object
On Error Resume Next
Set obMail = GetObject(, "Outlook.Application")
If obMail Is Nothing Then
MsgBox "Outlook ist noch nicht geöffnet - wird jetzt geöffnet"
Shell "Outlook.exe", 1
End If
On Error GoTo 0
Set obMail = CreateObject("Outlook.Application")
Set obNachricht = obMail.CreateItem(0)
With obNachricht
.To = "empfaenger@domain.com"
.Subject = "Test"
.Body = "Test"
.Display
End With
Set obNachricht = Nothing
Set obMail = Nothing
End Sub
Dieser Code sorgt dafür, dass Outlook gestartet wird, falls es nicht bereits geöffnet ist, und die E-Mail nicht im Postausgang hängen bleibt.
Häufige Fehler und Lösungen
-
Mail bleibt im Postausgang hängen: Stelle sicher, dass Outlook geöffnet ist, bevor Du die E-Mail versendest. Nutze dazu die oben angegebene Methode.
-
Outlook sendet nicht aus Postausgang: Überprüfe die Internetverbindung und die Outlook-Einstellungen, um sicherzustellen, dass der Versand korrekt konfiguriert ist.
-
E-Mail hängt im Postausgang, wenn Outlook nicht geöffnet ist: Der Code öffnet Outlook und erstellt die E-Mail, bevor sie angezeigt wird. Dies sollte das Problem lösen.
Alternative Methoden
Die Verwendung der .Send-Methode anstelle von .Display kann helfen, die E-Mail sofort zu versenden:
Sub EMailVersendenOutlookSofort()
Dim obNachricht As Object
Dim obMail As Object
On Error Resume Next
Set obMail = GetObject(, "Outlook.Application")
If obMail Is Nothing Then
Shell "Outlook.exe", 1
End If
On Error GoTo 0
Set obMail = CreateObject("Outlook.Application")
Set obNachricht = obMail.CreateItem(0)
With obNachricht
.To = "empfaenger@domain.com"
.Subject = "Test"
.Body = "Test"
.Send ' sofortiger Versand
End With
Set obNachricht = Nothing
Set obMail = Nothing
End Sub
Diese Methode ist nützlich, wenn die E-Mail nicht mehr im Postausgang hängen bleiben soll.
Praktische Beispiele
- E-Mail mit Anhang versenden: Wenn Du eine E-Mail mit Anhang versenden möchtest, kannst Du den Code wie folgt erweitern:
With obNachricht
.To = "empfaenger@domain.com"
.Subject = "Test mit Anhang"
.Body = "Hier ist der Anhang."
.Attachments.Add "C:\Pfad\zu\deinem\Anhang.txt"
.Display
End With
- Kalenderwoche in der E-Mail anzeigen: Du kannst auch die aktuelle Kalenderwoche in den E-Mail-Text einfügen:
Dim kw As Integer
kw = DatePart("ww", Now)
.Body = "Aktuelle Kalenderwoche: " & kw
Tipps für Profis
- Verwende
On Error Resume Next nur, wenn Du sicher bist, dass Fehler behandelt werden. Andernfalls kann es schwierig sein, den Fehlerursprung zu finden.
- Teste Deinen Code in einer sicheren Umgebung, bevor Du ihn in einer produktiven Umgebung einsetzt, um unerwartete Probleme zu vermeiden.
FAQ: Häufige Fragen
1. Warum bleibt meine E-Mail im Postausgang hängen?
Das liegt oft daran, dass Outlook nicht geöffnet ist. Der VBA-Code sollte Outlook vor dem Erstellen der E-Mail öffnen.
2. Was kann ich tun, wenn Outlook mail nicht aus Postausgang sendet?
Überprüfe, ob die Internetverbindung funktioniert und ob die Outlook-Einstellungen korrekt sind. Der Code zum Überprüfen, ob Outlook geöffnet ist, sollte helfen.
3. Wie kann ich sicherstellen, dass die E-Mail sofort gesendet wird?
Nutze die .Send-Methode anstelle von .Display, um die E-Mail direkt zu versenden.