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