E-Mails mit Outlook versenden

Microsoft Outlook ist für viele Access-Nutzer das Mittel der Wahl, um E-Mails zu versenden. Kein Wunder: Dank VBA-Schnittstelle lässt es sich ganz einfach von Access aus ansprechen. So können Sie im einfachsten Fall per Mausklick eine leere E-Mail öffnen, um diese auszufüllen und zu versenden. Oder Sie erstellen gleich die komplette E-Mail inklusive Empfänger, Betreff, Inhalt und gegebenenfalls auch den Anhang und versenden diese, ohne dass sie überhaupt angezeigt wird. Dieser Artikel zeigt die grundlegenden Techniken für die Programmierung von Outlook.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1305_MailMit-Outlook.mdb.

Vorbereitungen

Access stellt im VBA-Editor standardmäßig die Objekte, Methoden, Eigenschaften und Ereignisse der vier Bibliotheken Visual Basic for Applications, Microsoft Access x.0 Object Library, OLE Automation und Microsoft DAO 3.6 Object Library (ab Access 2007 Microsoft x.0 Access Database Engine Object) bereit. Diese enthalten die wesentlichen für die Arbeit mit Access notwendigen Elemente. Wenn Sie Ihre Arbeit auf andere Office-Anwendungen wie beispielsweise Outlook, Word oder Excel ausdehnen möchten, benötigen Sie entweder einen entsprechenden Verweis auf die jeweilige Bibliothek oder Sie binden das gewünschte Objekt erst zur Laufzeit ein.

Weitere Informationen zu diesen beiden Techniken, die Early Binding und Late Binding genannt werden, finden Sie im Artikel Early Binding und Late Binding.

In diesem Artikel verwenden wir Early Binding für den Zugriff auf das Objektmodell von Outlook. Das bedeutet, dass Sie im VBA-Editor mit dem Menüeintrag Extras|Verweise den Eintrag Microsoft Outlook x.0 Object Library hinzufügen (siehe Bild 1).

Verweise eines VBA-Projekts

Bild 1: Verweise eines VBA-Projekts

Wenn Sie nun mit der Taste F2 den Objektkatalog öffnen und dort im Kombinationsfeld oben links den Eintrag Outlook auswählen, finden Sie unten eine Liste aller Objekte der Outlook-Bibliothek vor – eines davon ist das Mail-Item-Objekt, mit dem wir gleich zu tun haben werden (siehe Bild 2).

Die Outlook-Bibliothek im Objektkatalog

Bild 2: Die Outlook-Bibliothek im Objektkatalog

Formular zum Steuern der Beispiele

Die Beispiele dieses Artikels steuern wir von einem Formular aus. Das Formular heißt frmMails und erhält zunächst eine Schaltfläche namens cmdMailErzeugen.

Hinterlegen Sie für die Ereigniseigenschaft Beim Klicken dieser Schaltfläche den Wert [Ereignisprozedur] und klicken Sie dann auf die Schaltfläche rechts neben dem Eigenschaftswert.

Es öffnet sich der VBA-Editor mit der leeren Prozedur. Dort ergänzen Sie zunächst die Zeilen aus Listing 1.

Private Sub cmdMailErzeugen_Click()
     Dim objOutlook As Outlook.Application
     Set objOutlook = New Outlook.Application
     MsgBox objOutlook.Name
     "...
End Sub

Listing 1: Outlook starten

Diese Anweisungen tun nichts anderes, als eine Outlook-Instanz zu erstellen beziehungsweise eine bestehende Instanz mit der Objektvariablen objOutlook zu referenzieren und den Wert der Eigenschaft Name der mit der Objektvariablen referenzierten Outlook-Instanz auszugeben.

Um dies zu reproduzieren, rufen Sie die Prozedur mit den folgenden Voraussetzungen auf und betrachten, was geschieht:

  • Wenn Outlook bereits geöffnet ist: In diesem Fall referenziert die Prozedur die Outlook-Instanz mit der Objektvariablen objOutlook und gibt deren Namen aus. Das Schlüsselwort New ist hier eigentlich irreführend, aber Sie wissen ja nun, was es bewirkt, wenn Outlook bereits geöffnet ist. Da die Objektvariable objOutlook innerhalb der Ereignisprozedur deklariert ist, wird diese anschließend automatisch wieder geleert.
  • Wenn Outlook noch nicht geöffnet ist: Dann erzeugt die Anweisung mit dem New-Schlüsselwort eine neue Instanz von Outlook und referenziert diese mit objOutlook. Nach der Ausgabe von objOutlook.Name wird die Prozedur wieder beendet. Da objOutlook die Outlook-Instanz somit nicht mehr referenziert, wird auch die Outlook-Instanz wieder beendet. Sie können dies im Windows Tast-Manager reproduzieren. Vor dem Aufruf sollte dort kein Eintrag namens OUTLOOK.EXE vorhanden sein. Während das Meldungsfenster angezeigt wird, finden Sie diesen Eintrag jedoch im Task-Manager vor. Nach dem Schließen des Meldungsfensters und dem Beenden der Prozedur verschwindet OUTLOOK.EXE wieder aus der Liste der Tasks.

Eine wichtige Information ist an dieser Stelle, dass Outlook durch das einfache Instanzieren nicht angezeigt wird – dies ist auch nur mit einem anderen Befehl möglich. Allerdings ist dies auch nicht das Ziel dieses Artikels – wir möchten schließlich eine E-Mail verschicken.

Leere E-Mail erstellen

Um eine neue, leere E-Mail zu erstellen, sind nur noch wenige Ergänzungen nötig. Die erste ist die Deklaration eines Objekts vom Typ Outlook.MailItem. Dieses referenziert die nachfolgend erstellte E-Mail. Die CreateItem-Methode mit dem Wert olMailItem für den ersten Parameter erzeugt ein neues E-Mail-Objekt, dass wir gleich mit der Objektvariablen objMail referenzieren.

Statt olMailItem könnten Sie auch eine andere Variable verwenden – beispielsweise um einen Termin oder einen Kontakt zu erzeugen. Dies besprechen wir jedoch in einem späteren Artikel.

Das MailItem-Objekt bietet einige Methoden an, zum Beispiel Display (siehe Listing 2). Damit zeigen Sie die frisch erstellt E-Mail nun auch noch an (siehe Bild 3). Die E-Mail wird mit dem standardmäßig gewählten Absender und gegebenenfalls mit einer Signatur angezeigt.

Eine per VBA erzeugte E-Mail

Bild 3: Eine per VBA erzeugte E-Mail

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

Schreibe einen Kommentar