Outlook: Mails

Zusammenfassung

Sie erfahren, wie Sie mit VBA und Outlook E-Mails von Access aus versenden können.

Techniken

Access, VBA, Formulare, Outlook

Voraussetzungen

Access 2000 oder höher, Outlook 2000 oder höher

Beispieldateien

AccessUndOutlook2000.mdb (ab Access 2000)

André Minhorst, Duisburg

Dieser und die folgenden Beiträge zeigen einige Möglichkeiten, um von Access aus Outlook per VBA fernzusteuern und E-Mails zu versenden, anzuzeigen oder zu löschen. In diesem Beitrag starten Sie mit den wichtigsten Voraussetzungen und dem Versenden von E-Mails.

Voraussetzungen

In den folgenden Kapiteln werden Sie des öfteren per VBA-Code auf Outlook zugreifen. Dazu ist es natürlich notwendig, dass sich Outlook überhaupt auf dem Rechner befindet.

Außerdem benötigen Sie einen Verweis auf die Bibliothek Microsoft Outlook 11.0 Object Library. Diesen wählen Sie über den Dialog Verweise der VBA-Entwicklungsumgebung aus. Den Dialog öffnen Sie über den Menüeintrag Extras/Verweise.

E-Mails versenden

Das direkte Versenden von E-Mails aus einer Access-Anwendung heraus, ohne Outlook öffnen zu müssen, ist eine komfortable Geschichte – erst recht, wenn die Mail anschließend wie bei einer auf herkömmlichem Wege versendeten E-Mail im entsprechenden Outlook-Ordner landet.

Mit dem nachfolgend vorgestellten Quellcode öffnen Sie mit dem Formular aus Abb. 1 den Outlook-Dialog zur Anzeige einer E-Mail und füllen die wichtigsten Felder der E-Mail automatisch aus (s. Abb. 2).

Abb. 1: Beispielformular zum Aufrufen des Outlookschen E-Mail-Dialogs

Abb. 2: Von Outlook bereitgestellter Dialog zum Versenden einer E-Mail

Das Formular ist als Beispiel bewusst einfach gehalten – es ist nicht an eine Tabelle gebunden und enthält nur die wichtigsten Informationen zum Versenden einer E-Mail.

Der interessanteste Teil des Formulars ist die Funktionalität der Schaltfläche cmdMailErstellen. Sie ruft die Prozedur aus Quellcode 1 auf.

Zum Fernsteuern von Outlook bedarf es dort gar nicht viel: Sie benötigen zwei Objektvariablen, um eine Outlook-Instanz und das zu erstellende Mail-Objekt zu referenzieren, und einige Eigenschaften und Methoden des Outlook-Objektmodells.

Quellcode 1: Anzeigen und füllen des E-Mail-Dialogs von Outlook

Private Sub cmdMailErstellen_Click()
    Dim objOutlook As Outlook.Application
    Dim objMail As Outlook.MailItem
    Set objOutlook = New Outlook.Application
    Set objMail = objOutlook.CreateItem(olMailItem)
    With objMail
        .To = Nz(Me.txtEMail, "")
        .Subject = Nz(Me.txtBetreff, "")
        .Body = Nz(Me.txtInhalt, "")
        .Display True
    End With
    objOutlook.Quit
    Set objOutlook = Nothing
End Sub

Quellcode 2: Anlegen einer benutzerdefinierten Eigenschaft und suchen nach einer Mail mit dieser Eigenschaft im Ordner „Gesendete Objekte“

''Anlegen einer benutzerdefinierten Eigenschaft
objMail.ItemProperties.Add _    "BenutzerdefinierteEigenschaft", olText
objMail.ItemProperties("BenutzerdefinierteEigenschaft").Value _    = "Wert"
''Suchen nach einer E-Mail mit dieser benutzerdefinierten 
''Eigenschaft
For Each objMail In objFolder.Items
    On Error Resume Next
    If objMail.ItemProperties("BenutzerdefinierteEigenschaft") _        = "Wert") Then
        Debug.Print objMail.EntryID
        Exit For
    End If
    On Error GoTo 0
Next objMail

Das Mail-Objekt bietet Eigenschaften wie To, Subject oder Body, die Sie mit den Informationen aus dem Formular füllen können, und Methoden wie Display, die zur Anzeige des E-Mail-Dialogs führen.

Letztere bietet einen Parameter namens Modal, mit dem Sie angeben können, ob der Dialog modal geöffnet werden soll – dadurch wird der Ablauf der aufrufenden Prozedur unterbrochen, bis der Dialog wieder geschlossen wird.

Den Aufruf des Dialogs kann man sich natürlich auch sparen – zumindest wenn ohnehin schon alle wichtigen Informationen vorliegen. In diesem Fall verwendet man einfach die Methode Send des Mail-Objekts, um die E-Mail direkt abzusenden.

Auf EntryID gesendeter E-Mails zugreifen

Das eindeutige Merkmal einer E-Mail in Outlook ist ihre EntryID. Dabei handelt es sich um eine Kombination aus Zahlen und Buchstaben, die nur einen Nachteil hat: Sie ändert sich, wenn eine E-Mail den Outlook-Ordner wechselt.

Und da eine E-Mail nach dem Absenden zunächst in den Postausgang wandert und erst mit der nächsten Auslieferung in den Ordner Gesendete Objekte, ist es nicht so einfach, eine E-Mail via VBA und Outlook zu versenden und direkt die EntryID zu ermitteln, um das erneute Anzeigen dieser E-Mail zu ermöglichen.

Das Hauptproblem ist, dass man nicht sicher sein kann, dass die E-Mail auch direkt versendet wird – der Zeitpunkt, an dem sie in den Ordner Gesendete Objekte gelangt, ist also nicht exakt festzulegen.

Sie lernen zwar im folgenden Beitrag E-Mails aus Outlook auswählen, wie Sie eine E-Mail aus einem Outlook-Ordner herausfischen können, aber dies sollte schon automatisiert geschehen.

Dafür gibt es mehrere Möglichkeiten: Entweder Sie suchen eine Weile nach dem Versenden nach einer Mail, deren Subject und CreationTime

mit in der Datenbank gespeicherten Werten übereinstimmen, oder Sie legen für die gesendete E-Mail eine benutzerdefinierte Eigenschaft an, die Sie mit einem eindeutigen Wert belegen, und suchen anschließend nach diesem Wert. Das Hinzufügen und Festlegen einer solchen Eigenschaft sieht wie in Quellcode 2 aus.

Zusammenfassung

Sie erfahren, wie Sie mit VBA und Outlook die EntryID einer E-Mail von Access aus ermitteln und speichern können, um den späteren Zugriff auf diese E-Mail zu ermöglichen.

Techniken

Access, VBA, Listenfelder, temporäre Tabellen, Outlook

Voraussetzungen

Access 2000 oder höher, Outlook 2000 oder höher

Beispieldateien

AccessUndOutlook2000.mdb

André Minhorst, Duisburg

Im Beitrag „E-Mails versenden mit VBA und Outlook“ haben Sie erfahren, wie Sie von Access aus E-Mails versenden und deren EntryID ermitteln können, um später auf diese zuzugreifen. Letzteres macht natürlich auch für bestehende E-Mails Sinn: Vielleicht versenden Sie einmal eine E-Mail und möchten Sie später im CRM einem bestimmten Kunden zuweisen. Wie Sie die EntryID von E-Mails herausfinden, erfahren Sie in diesem Beitrag.

Wer Mails via Outlook verschickt, möchte vielleicht auch später einmal von Access aus auf diese zugreifen. Die erste hier vorgestellte Möglichkeit erfordert zuvor das Auswählen der gewünschten E-Mail und zeigt diese erst dann an.

Für die Auswahl einer E-Mail sind zwei Dialoge erforderlich: Mit dem ersten legt man den Outlook-Ordner fest, aus dem die auszuwählende E-Mail stammt (s. Abb. 1).

Der zweite zeigt schließlich die in dem Ordner enthaltenen E-Mails an (s. Abb. 2). Mit der auf diese Weise ausgewählten E-Mail kann man anschließend jede Menge Dinge erledigen – dazu aber später mehr.

Abb. 1: Auswählen eines Outlook-Ordners

Abb. 2: Anzeige der in einem Ordner enthaltenen E-Mails

Formular zum Anzeigen von E-Mails

Bevor es an den Quellcode geht, legen Sie das Gerüst in Form des Formulars frmMailAuswaehlen an.

Abb. 3: Daten der temporären Tabelle tblMailsTemp

Das Formular enthält ein Listenfeld zur Anzeige der Mails, ein Textfeld zur Anzeige des Ordners, in dem sich die E-Mails befinden, und eine Schaltfläche zum Auswählen eines anderen Ordners.

Des Weiteren dienen die zwei Schaltflächen cmdAuswaehlen und cmdAbbrechen zum Schließen des Formulars – den Unterschied zwischen den beiden erfahren Sie später.

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar