In VBA prüfen, ob eine E-Mail in Outlook gesendet wurde.

Home-›Foren-›Outlook-›Outlook VBA-›In VBA prüfen, ob eine E-Mail in Outlook gesendet wurde.

2 Antworten anzeigen - 1 bis 2 (von insgesamt 2)
  • Autor
    Beitrag
  • #1031382
    D B
    Participant

      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?

      #1031383
      Mailhilfe
      Keymaster

        Um 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 des MailItem-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

        1. Zuerst wird ein E-Mail-Objekt in Outlook erstellt und der Text, Empfänger, Betreff etc. gesetzt.
        2. Anschließend wird die E-Mail angezeigt (Display), damit der Benutzer die Nachricht bearbeiten kann.
        3. Nach dem Anzeigen der Nachricht prüft der Code, ob die E-Mail tatsächlich versendet wurde.
        4. Durch das Abfragen der Sent-Eigenschaft des MailItem-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 Sub

        Erklä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. Wenn Sent = 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 auf False.
        • Die Eigenschaft Sent ist erst nach dem Schließen des E-Mail-Fensters verfügbar.
      2 Antworten anzeigen - 1 bis 2 (von insgesamt 2)

      Hat Ihnen der Beitrag gefallen?

      1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung vorhanden)
      Loading...