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 6/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

Importieren Sie E-Mail-Inhalte aus Outlook-Ordnern und weisen Sie diese den Kunden Ihrer Kundendatenbank zu.

Techniken

Outlook, Formulare, Treeview, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

Kundenkommunikation.mdb

Shortlink

www.access-im-unternehmen.de/865

Kundenkommunikation per E-Mail verwalten, Teil 1

André Minhorst, Duisburg

Wenn Sie den E-Mail-Verkehr mit Ihren Kunden im Griff haben wollen, kopieren Sie einfach alle betroffenen E-Mails in Ihre Kundendatenbank. Dort landen diese in einer Tabelle, deren Datensätze Sie den Kunden zuordnen können. Vor dem Zuordnen müssen Sie jedoch noch festlegen, welche E-Mails aus welchen Ordnern importiert werden sollen. Dieser Beitrag zeigt, wie Sie den Zugriff auf Outlook und den Import der E-Mails automatisieren.

Bevor Sie eine E-Mail überhaupt einem Kunden in Ihrer Datenbank zuordnen können, müssen Sie diese erstmal lesen und gegebenenfalls die wichtigsten Daten der E-Mail in der Datenbank speichern.

Dies erledigen Sie mit den in diesem Beitrag vorgestellten Techniken. Dabei sind folgende Schritte nötig:

  • Definieren der Ordner, deren E-Mails eingelesen werden sollen, und festlegen, welche davon Ausgangs- und welche Eingangsordner sind
  • Angabe der eigenen E-Mail-Adressen, um nur gezielt adressierte E-Mails zu importieren
  • Angabe der E-Mail-Adressen der Kunden, deren E-Mails berücksichtigt werden sollen
  • Markieren der importierten E-Mails in Outlook, damit diese als eingelesen erkannt und nicht nochmals eingelesen werden
  • Zuordnen der eingelesenen E-Mails zu den Kunden in der Kundentabelle
  • Aufbauen einer hierarchischen Struktur aus E-Mails und den passenden Antworten
  • Anzeige dieser E-Mail-Hierarchie im TreeView-Steuerelement

Eingangs- und Ausgangsordner festlegen

Der erste Schritt dient dazu, die zu berücksichtigenden Ordner von Outlook zu ermitteln. Normalerweise verwendet man nur einen Posteingang und einen Ordner, in dem die gesendeten Objekte landen.

Gegebenenfalls haben Sie aber mehrere E-Mail-Adressen eingerichtet oder filtern E-Mails gleich nach dem Eingang oder Ausgang mit entsprechenden Regeln in andere Ordner. Daher erstellen wir gleich zu Beginn eine Tabelle, welche die zu durchsuchenden Ordner speichert, und zwei Formulare, mit denen Sie die gewünschten Outlook-Ordner festlegen können - ein einfaches und eines mit der Darstellung der zu prüfenden Ordner als TreeView.

Die Tabelle heißt tblMailordner und enthält die folgenden drei Felder:

  • MailordnerID: Primärschlüsselfeld
  • Mailordner: Pfad des Ordners

Mit einigen Werten sieht diese Tabelle etwa wie in Abb. 1 aus.

pic002.png

Abb. 1: Tabelle zum Speichern der Outlook-Ordner

Ordner ermitteln

Wie füllen Sie diese Tabelle nun mit den Outlook-Ordnern? Die einfachste Methode ist, einfach den zur Auswahl von Outlook-Ordnern vorgesehenen Dialog zu verwenden. Nehmen wir an, Sie verwenden ein Formular namens frmMailordner, das die in der Tabelle tblMailordner enthaltenen Datensätze in einem Listenfeld namens lstMailordner anzeigt. Dann können Sie diesem Formular eine Schaltfläche namens cmdHinzufuegen zuweisen, welche die Ereignisprozedur aus Listing 1 ausführt. Diese erstellt ein Application-Objekt für den Zugriff auf Outlook, ein Namespace-Objekt und schließlich ein Folder-Objekt. Das Namespace-Objekt stellt die Methode PickFolder bereit, die den Dialog aus Abb. 2 öffnet.

Listing 1: Hinzufügen eines Mailordners zur Tabelle tblMailordner

Private Sub cmdHinzufuegen_Click()

    Dim objOutlook As Outlook.Application

    Dim objNamespace As Outlook.NameSpace

    Dim objFolder As Outlook.Folder

    Dim db As DAO.Database

    Set db = CurrentDb

    Set objOutlook = New Outlook.Application

    Set objNamespace = objOutlook.GetNamespace("MAPI")

    Set objFolder = objNamespace.PickFolder

    If Not objFolder Is Nothing Then

        db.Execute "INSERT INTO tblMailordner(Mailordner) VALUES('" _

            & objFolder.FolderPath & "')", dbFailOnError

        Me!lstMailordner.Requery

    End If

End Sub

pic001.png

Abb. 2: Auswahl von Outlook-Ordnern mit dem dafür vorgesehenen Dialog

Damit wählen Sie einen der Ordner aus und klicken dann auf die Schaltfläche OK. Die Prozedur prüft, ob ein Ordner ausgewählt wurde, und schreibt dann den Wert der Eigenschaft FolderPath in die Tabelle tblMailordner. Die dortigen Ordner werden unmittelbar nach dem Hinzufügen im Listenfeld angezeigt.

Dies ist die einfache Variante und verdeutlicht die grundlegende Technik. Für etwas mehr Komfort möchten Sie aber vielleicht direkt die Struktur der Outlook-Ordner in einem TreeView innerhalb der Datenbank abbilden und dort mit geeigneten Kontrollkästchen die zu berücksichtigenden Ordner markieren.

Outlook-Ordner-Baum

Dazu legen Sie zunächst ein neues Formular namens frmMailordnerTree an und fügen diesem ein TreeView-Steuerelement hinzu. Nennen Sie das Steuerelement ctlMailordner und fügen Sie dem Formular eine Ereignisprozedur für das Ereignis Beim Laden hinzu.

Diese Prozedur setzt die grundlegenden Einstellungen des TreeView-Steuerelements und ruft die Prozedur zum Füllen auf. Im Formularmodul benötigen Sie auf jeden Fall eine Objektvariable für das TreeView-Steuerelement, das mit dem Schlüsselwort WithEvents ausgestattet wird, damit Sie auch auf dessen Ereignisse reagieren können:

Dim WithEvents objMailordner As MSComctlLib.TreeView

Die Prozedur, die beim Laden des Formulars ausgelöst wird, finden Sie in Listing 2. Sie weist zunächst der Objektvariablen objMailordner einen Verweis auf das TreeView-Steuerelement zu.

Listing 2: Ereignisprozedur beim Laden des Formulars

Private Sub Form_Load()

    Set objMailordner = Me!ctlMailordner.Object

    With objMailordner

        .Checkboxes = True

        .Font.name = "Calibri"

        .Font.Size = 9

        .LineStyle = tvwRootLines

    End With

    MailordnerEinlesen

End Sub

Danach stellt sie einige Eigenschaften für das TreeView-Steuerelement ein, was eine Einstellung über den Eigenschaften-Dialog dieses Steuerelements erübrigt. Dabei werden die Kontrollkästchen aktiviert, die Schriftart angepasst und die Root-Linien für die Root-Elemente eingeblendet. Die letzte Anweisung ruft die Prozedur MailordnerEinlesen auf, nach deren Abarbeitung das Formular wie in Abb. 3 aussieht.

pic003.png

Abb. 3: Outlook-Ordner per TreeView auswählen

Diese Prozedur finden Sie in Listing 3. Für die Execute-Anweisung gleich zu Beginn, die den Wert eines Feldes namens Aktiv der Tabelle tblMailordner auf False einstellt, sind einige erklärende Worte nötig: Das TreeView-Steuerelement soll alle Outlook-Ordner, die standardmäßig Mail-Elemente enthalten, hierarchisch auflisten.

Listing 3: Einlesen der Mailordner und Anhaken der bereits in der Tabelle tblMailordner eingetragenen Ordner

Public Sub MailordnerEinlesen()

    Dim objOutlook As Outlook.Application

    Dim objNamespace As Outlook.NameSpace

    Dim objFolder As Outlook.Folder

    Dim objNode As MSComctlLib.Node

    Dim db As DAO.Database

    Dim rstMailordner As DAO.Recordset

    Set db = CurrentDb

    db.Execute "UPDATE tblMailordner SET Aktiv = FALSE", dbFailOnError

    Set objOutlook = New Outlook.Application

    Set objNamespace = objOutlook.GetNamespace("MAPI")

    objMailordner.Nodes.Clear

    Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)

    Set objNode = NodeAnlegen(db, objFolder, "")

    MailordnerEinlesen_Rek db, objFolder, objNode

    Set objFolder = objNamespace.GetDefaultFolder(olFolderSentMail)

    Set objNode = NodeAnlegen(db, objFolder, "")

    MailordnerEinlesen_Rek db, objFolder, objNode

    Set rstMailordner = db.OpenRecordset("SELECT * FROM tblMailordner WHERE Aktiv = FALSE", _

        dbOpenDynaset)

    Do While Not rstMailordner.EOF

        If MsgBox("Der Mailordner '" & rstMailordner!Mailordner _

                & "' ist nicht mehr in Outlook vorhanden." & vbCrLf & vbCrLf _

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.