Home-›Foren-›Outlook-›Outlook VBA-›In VBA prüfen, ob eine E-Mail in Outlook gesendet wurde.
- This topic has 1 Antwort, 2 Stimmen, and was last updated 09:11 um 29. Oktober 2024 by Mailhilfe.
- AutorBeitrag
- 29. Oktober 2024 um 02:15 #1031382D BParticipant
In meiner Excel-VBA App kann der User eine E-Mail mit Outlook an seinen Kunden senden. Nach dem Aufruf von Outlook kann er den Body-Text editieren und dann auf den Button ‚Senden‘ klicken. Er kann aber auch Outlook einfach abbrechen. Wie kann ich in VBA zuverlässig feststellen, ob die E-Mail versandt wurde?
29. Oktober 2024 um 09:11 #1031383MailhilfeKeymasterUm sicherzustellen, ob eine E-Mail tatsächlich versandt wurde oder ob der Benutzer die E-Mail in Outlook abgebrochen hat, gibt es eine Möglichkeit, das
Sent
-Attribut desMailItem
-Objekts in Outlook zu überprüfen. Hierbei wird der VBA-Code angepasst, sodass Outlook erst dann geschlossen wird bzw. die Aktion erst dann abgeschlossen wird, wenn die E-Mail wirklich gesendet wurde.Hier ist eine Lösung, die dies berücksichtigt:
Ansatz
- Zuerst wird ein E-Mail-Objekt in Outlook erstellt und der Text, Empfänger, Betreff etc. gesetzt.
- Anschließend wird die E-Mail angezeigt (
Display
), damit der Benutzer die Nachricht bearbeiten kann. - Nach dem Anzeigen der Nachricht prüft der Code, ob die E-Mail tatsächlich versendet wurde.
- Durch das Abfragen der
Sent
-Eigenschaft desMailItem
-Objekts kann festgestellt werden, ob die E-Mail gesendet wurde (Sent = True
) oder nicht (Sent = False
).
Sub SendeEmailMitÜberprüfung()
Dim OutlookApp As Object
Dim Mail As Object
Dim Versendet As Boolean‚ Outlook-Anwendung erstellen
Set OutlookApp = CreateObject(„Outlook.Application“)
Set Mail = OutlookApp.CreateItem(0) ‚ 0 steht für olMailItem‚ E-Mail-Parameter festlegen
With Mail
.To = „kunde@beispiel.com“ ‚ Empfängeradresse
.Subject = „Betreff der E-Mail“ ‚ Betreff der E-Mail
.Body = „Dies ist der Body der E-Mail.“ ‚ Text der E-Mail
.Display ‚ E-Mail anzeigen
End With‚ Pause, um Outlook Zeit zu geben, die E-Mail zu verarbeiten
DoEvents‚ Überprüfen, ob die E-Mail versendet wurde
On Error Resume Next
Versendet = Mail.Sent
On Error GoTo 0‚ Überprüfungsergebnis anzeigen
If Versendet Then
MsgBox „Die E-Mail wurde erfolgreich versendet.“, vbInformation
Else
MsgBox „Der Versand der E-Mail wurde abgebrochen.“, vbExclamation
End If‚ Objekte freigeben
Set Mail = Nothing
Set OutlookApp = Nothing
End SubErklärung des Codes
- E-Mail erstellen und anzeigen: Das
Mail
-Objekt wird erstellt und alle relevanten Felder wie Empfänger (.To
), Betreff (.Subject
) und Nachrichtentext (.Body
) werden gesetzt. Durch.Display
wird die E-Mail angezeigt, sodass der Benutzer sie bearbeiten und versenden oder abbrechen kann. - Prüfung des Versandstatus: Nachdem die E-Mail angezeigt wurde, prüft der Code mit
Mail.Sent
, ob die E-Mail tatsächlich versendet wurde. WennSent = True
ist, wurde die E-Mail erfolgreich versendet; wenn nicht, hat der Benutzer sie abgebrochen. - Benachrichtigung: Basierend auf dem Ergebnis wird eine entsprechende Meldung angezeigt, entweder dass die E-Mail erfolgreich versendet wurde oder dass der Versand abgebrochen wurde.
Wichtige Hinweise
- Der Code geht davon aus, dass der Benutzer die E-Mail manuell versendet oder abbricht. Solange die E-Mail geöffnet ist, bleibt das
Sent
-Attribut aufFalse
. - Die Eigenschaft
Sent
ist erst nach dem Schließen des E-Mail-Fensters verfügbar.
- AutorBeitrag