Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 1/2012.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Versenden Sie E-Mails von Access aus mithilfe von Outlook und nutzen Sie die Features neuerer Versionen.

Techniken

VBA, Outlook

Voraussetzungen

Access 2000 und höher

Beispieldateien

OutlookMails.mdb

Shortlink

www.access-im-unternehmen.de/819

Mails senden mit Outlook

André Minhorst, Duisburg

Wer Access und Outlook auf dem Rechner hat, kann recht einfach von einer Access-Anwendung aus E-Mails verschicken. Wer dies professionell erledigen möchte, muss jedoch einige Punkte beachten - zum Beispiel, beim Einsatz mehrerer Konten das richtige Konto für den Versand auszuwählen. Dieser Beitrag zeigt, wie Sie per VBA auf Outlook zugreifen und E-Mails mit allen Finessen verschicken können.

Verweis auf Outlook-Bibliothek

Wenn Sie von Access aus per VBA auf die Objektbibliothek einer externen Anwendung zugreifen möchten, empfiehlt sich zumindest für die Zeit der Entwicklung die Arbeit mit einem entsprechenden Verweis - Sie können so von IntelliSense profitieren und bei Bedarf später auf Late Binding umstellen. Der Verweis wird etwa unter Access 2010 im Dialog Verweise eingestellt, den Sie mit dem Menübefehl Extras|Verweise des VBA-Editors öffnen (s. Abb. 1). Danach starten wir direkt mit einer Prozedur zum Verschicken von E-Mails, die wir zunächst in einem Standardmodul unterbringen. Um auf die Objekte von Outlook zugreifen zu können, deklarieren Sie dort zunächst eine entsprechende Objektvariable:

pic001.png

Abb. 1: Verweis auf die Outlook-Bibliothek hinzufügen

Dim objOutlook As Outlook.Application

Diese füllen Sie mit der folgenden Anweisung:

Set objOutlook = New Outlook.Application

Eine E-Mail ist eines der Objekte, die Sie mit einem Klick auf die entsprechende Schaltfläche in Outlook neu erstellen können. Dies gelingt natürlich auch per VBA:

objOutlook.CreateItem olMailItem

Nur mit dieser Anweisung verschwindet die E-Mail allerdings schnell im Nirwana. Sie sollten diese zumindest anzeigen, und dazu speichern wir einen Verweis auf die neu erstellte E-Mail in der folgenden Variablen:

Dim objMail As Outlook.MailItem

Die Erstellung und Zuweisung sieht dann so aus:

Set objMail = objOutlook.CreateItem(olMailItem)

Danach können Sie die E-Mail mit der Display-Methode anzeigen:

objMail.Display

Das Ergebnis sieht wie in Abb. 2 aus. Die Felder wie An, CC, Betreff und den Inhalt füllen wir zu Beispielzwecken gleich mithilfe der entsprechenden Eigenschaften:

pic004.png

Abb. 4: Outlook kann mehrere Benutzerkonten verwalten.

objMail.To = "andre@minhorst.com"

objMail.Subject = "Beispiel-E-Mail"

objMail.Body = "Dies ist eine Beispiel-E-Mail."

Wenn Sie hinter der Display-Anweisung einen Haltepunkt setzen, können Sie diese Eigenschaften sogar über das Direktfenster eingeben und beobachten, wie sich die Inhalte der entsprechenden Textfelder ändern.

Absender-Konto einstellen

Etwas schwieriger wird es mit dem Absender. Der wird je nach aktuell aktivem Konto unter Outlook beim Erstellen der E-Mail automatisch gefüllt. Zwar lässt sich der Absender per Benutzeroberfläche auswählen (s. Abb. 3), das VBA-Objektmodell zeigt sich aber etwas zickig. Die Eigenschaften SenderEMail und SenderName sind schreibgeschützt, die Eigenschaft Sender erwartet ein Objekt aus dem Kontakte-Ordner der aktuellen Outlook-Instanz. Da wir die folgenden Prozeduren so gestalten möchten, dass Sie E-Mails mit alternativen Absendern verschicken können, bauen wir einen Workaround ein, bei dem Sie eines der vorhandenen Benutzerkonten als Absender angeben können - und zwar anhand der E-Mail-Adresse.

pic002.png

Abb. 2: Leere, per VBA erstellte Outlook-E-Mail

Dies geschieht mithilfe einer kleinen Funktion, der Sie drei Parameter übergeben:

  • objOutlook: Referenz auf die Outlook-Instanz
  • objMail: Verweis auf das E-Mail-Objekt
  • strSender: Name des auszuwählenden Absenders

Die Funktion sieht wie in Listing 1 aus. Sie durchläuft alle vorhandenen Benutzerkonten der aktuellen Sitzung (s. Abb. 4) und vergleicht deren Eigenschaft SmtpAddress mit der übergebenen Absenderadresse. Hat sie das richtige Konto gefunden, wird dieses der Eigenschaft SendUsingAccount zugewiesen. Außerdem wird die Funktion beendet und der Wert True als Funktionswert zurückgegeben. In der aufrufenden Routine können Sie diese Funktion etwa so nutzen:

Listing 1: Einstellen des Absenders mit Outlook 2007 und jünger

Public Function SetSender(objOutlook As Outlook.Application, objEMail As Outlook.MailItem, strSender As String) As Boolean

    Dim objAccount As Outlook.Account

    For Each objAccount In objOutlook.Session.Accounts

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.