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 2/2001.

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

Import und Export von Adressdaten

Autor: André Minhorst, Duisburg

Office-Anwender verfügen automatisch über eine Version von Outlook, einer Anwendung zur Verwaltung von Adressen, Terminen, Projekten und elektronischer Korrespondenz. Moment - heißt es da Verwaltung von Adressen? Dient nicht auch jede zweite Datenbank zur Verwaltung von Adressen oder Kontakten? Das wäre ja doppelt gemoppelt! Wenn Sie also Kontakte in Outlook und einer Access-Datenbank verwalten, ist der vorliegende Beitrag genau das Richtige für Sie: Sie erfahren nämlich, wie Sie Daten zwischen Outlook und Access hin- und herbewegen können.

Manuell oder automatisiert?

Es gibt unterschiedliche Arten, Daten von Access zu Outlook und zurück zu bewegen. Die einfachste Art ist sicher der Import von Outlook-Daten in eine Access-Tabelle.

Import mit dem Assistenten

Dabei müssen Sie allerdings jedes Mal mit dem Assistenten arbeiten. Sie lernen diese Methode im folgenden Kapitel kennen. Wenn Sie die Daten Ihrer Datenbank oft mit denen von Outlook synchronisieren, ist das allerdings eine eher umständliche Variante.

Import per VBA

In dem Fall sollten Sie eine VBA-Routine entwerfen, die automatisch die gewünschten Daten in die entsprechende Tabelle einliest. Wie das funktioniert, erfahren Sie in Kapitel 3.

Export per VBA

Es geht aber auch andersherum: Natürlich können Sie auch Daten aus einer Access-Datenbank in die Kontakte von Outlook übernehmen. Auch hier ist die Verwendung einer VBA-Prozedur die beste Möglichkeit. Alles hierüber erfahren Sie in Kapitel 4.

Import von Outlook-Daten mit dem Assistenten

Wenn Sie Kontaktdaten von Outlook in ihre eigene Datenbank übernehmen möchten, gibt es zwei Möglichkeiten: Entweder es existiert bereits eine Tabelle, in die Sie die entsprechenden Daten importieren möchten, oder der Assistent soll eine neue Tabelle erstellen.

In beiden Fällen wählen Sie zunächst den folgenden Menübefehl: Datei( Externe Daten( Importieren. Es öffnet sich ein Dialog zur Auswahl der Datei, aus der Sie die Daten importieren möchten. Wählen Sie im Kombinationsfeld Dateityp den Eintrag Outlook. Daraufhin verschwindet der erste Dialog und es erscheint der weiterer Dialog namens Exchange/Outlook-Import-Assistent (Abb. 1).

Abb. 1: Der Import-Assistent von Outlook

Öffnen Sie hier den Ordner Adressbücher und wählen Sie den Eintrag Kontakte aus. Klicken Sie dann auf die Schaltfläche Weiter.

Neue oder bestehende Tabelle?

Hier entscheiden Sie nun, ob der Assistent eine neue Tabelle angelegen oder eine vorhandene Tabelle verwenden soll. Wenn Sie die Option Bestehende Tabelle wählen, müssen Sie auch den Namen der gewünschten Tabelle angeben.

Import in eine neue Tabelle

Am einfachsten ist es, einfach eine neue Tabelle anzulegen. Wählen Sie daher die Option In einer neuen Tabelle aus. Klicken Sie anschließend auf die Schaltfläche Weiter (Abb. 2).

Abb. 2: Auswahl einer Tabelle zum Speichern der Daten

Anschließend können Sie die einzelnen Felder der neuen Tabelle gemäß Ihren Wünschen anpassen. Dazu klicken Sie in der unteren, datenblattähnlichen Ansicht auf das gewünschte Feld und geben anschließend den Feldnamen und den Datentyp an. Außerdem legen Sie fest, ob der Assistent für das Feld einen Index festlegen soll. Durch Markieren des Kontrollkästchens Feld nicht importieren (Überspringen) können Sie den Import des Feldes verhindern (Abb. 3).

Abb. 3: Anpassen der zu importierenden Daten

Im folgenden Schritt legen Sie noch fest, ob Sie einen Primärindex festlegen und welchen Sie verwenden möchten (Abb. 4).

Abb. 4: Hinzufügen eines Primärschlüssels

Schließlich fragt der Assistent Sie nach dem Namen, unter dem er die Tabelle anlegen soll. Mit einem Mausklick auf die Schaltfläche Fertigstellen beenden Sie die Arbeit des Assistenten.

Import in eine bestehende Tabelle

Wenn Sie die Daten in eine bestehende Tabelle importieren möchten, wählen Sie im ersten Dialog des Assistenten die Option In einer bestehenden Tabelle. Sie können die Daten aber lediglich in eine solche Tabelle einfügen, die Felder für alle entsprechenden Daten von Outlook enthält. Anderenfalls erhalten Sie eine Fehlermeldung und der Assistent bricht den Vorgang ab.

Import von Outlook-Daten per VBA

Wenn Sie die Outlook-Daten per VBA importieren möchten, können Sie Vorgang erheblich beschleunigen und anpassen. Sie können dann auch Daten in bereits vorhandene Tabellen importieren, deren Feldnamen nicht mit den Feldnamen der Outlook-Daten übereinstimmen.

Schneller geht es vor allem dann, wenn Sie genau wissen, welche Felder Sie von Outlook in die Access-Tabelle kopieren möchten.

Sie können den Import - im Vergleich zum Assistenten - weiter anpassen, indem Sie sich eine Art eigenen Assistenten erstellen. Sie können dann beispielsweise nur bestimmte Datensätze importieren - z.B. nur die Daten von Kontakten mit einer E-Mail-Adresse.

Einbinden der Outlook-Objektbibliothek

Bevor Sie per VBA auf Outlook zugreifen können, müssen Sie die Bibliothek mit den entsprechenden Befehlen per Verweis einbinden. Dazu öffnen Sie ein beliebiges Modul und klicken auf den Menübefehl Extras( Verweise. Hier suchen Sie den Eintrag Microsoft Outlook 9.0 Object Library und aktivieren ihn (Abb. 5).

Abb. 5: Setzen eines Verweises auf die Outlook-Objektbibliothek

Zugriff auf unterschiedliche Outlook-Objekte

Nach den Vorbereitungen können Sie nun direkt mit der Programmierung des ersten Beispiels beginnen.

Da einige Variablen in vielen Beispielprozeduren Verwendung finden, deklarieren Sie sie am Besten im öffentlichen Deklarationsteil eines Moduls.

Das erste Beispiel soll alle Ordner von Outlook sowie deren Unterordner ermitteln.

Dazu definieren Sie zunächst drei Objekte, nämlich ein Application-, ein NameSpace- und ein Folders-Objekt. Das Application-Objekt dient für den Zugriff auf die gesamte Outlook-Anwendung. Über dieses Objekt können Sie auch auf alle weiteren, untergeordneten Objekte zugreifen. Eine Ebene unter dem Application-Objekt finden Sie das NameSpace-Objekt. Das NameSpace-Objekt von Outlook heißt MAPI. Es enthält alle Outlookdaten, die in den Nachrichtenspeichern eines Anwenders gespeichert werden. Dazu gehören neben den Nachrichten selbst auch noch andere Objekte wie die Kontakte, Aufgaben, der Kalender usw. Das Objekt Folders wiederum ist dem NameSpace-Objekt untergeordnet. Hierüber greifen Sie auf den Ordner Persönliche Ordner und seine Unterordner zu.

Setzen von Verweisen auf Outlook-Objekte

Um auf Objekte von Outlook - beispielsweise Ordner oder Kontakte - zugreifen zu können, müssen Sie die entsprechenden Objekte referenzieren.

Sie beginnen mit der Deklaration der Objekte:

Dim olAnwendung as Outlook.Application

Dim olNamespace as Outlook.Namespace

Dim olKontaktordner as Outlook.MAPIFolder

Anschließend setzen Sie die nötigen Verweise, beispielsweise auf die Outlook-Anwendung:

Set olAnwendung = Outlook.Application

Set olNamespace = olAnwendung.GetNamespace("MAPI")

Set olKontaktordner = olNamespace.GetDefaultFolder(olFolderContacts)

Wie Sie sehen, bauen die einzelnen Objekte aufeinander auf. So ist es auch bei den weiteren Objekten, die Sie in den meisten Beispielprozeduren verwenden.

Wenn Sie beispielsweise einen Kontakt aus dem Ordner "Kontakte", dem Standardordner für Kontakte ermitteln wollen, deklarieren Sie zunächst die Gruppe aller Kontakte des Ordners als

Dim olKontakte as olKontaktordner.Items

und den einzelnen Kontakt als

Dim olKontakt as olKontaktordner.ContactItem.

Anschließend setzen Sie die entsprechenden Verweise:

Set olKontakte = olKontaktordner.Items

und ermitteln aus der Objektgruppe folgendermaßen einen einzelnen Kontakt:

St olKontakt = olKontakte.GetFirst

Im vorliegenden Fall setzen Sie den Objektzeiger beispielsweise auf den ersten Kontakt der Gruppe.

Außerdem stehen Ihnen die folgenden Methoden zum Auffinden eines Kontaktes aus einer Kontaktgruppe zur Verfügung:

Find, FindNext, GetNext, GetLast, GetPrevious.

Praxis-Tipp

Falls Sie große Adressenmengen in Outlook verwalten, bietet es sich an, geeignete Unterordner zu erstellen. Das können Sie ganz einfach tun, indem Sie mit der rechten Maustaste auf den vorhandenen Kontakte-Ordner klicken und den Befehl Neuer Ordner aus dem Kontextmenü auswählen. In Abb. 6 finden Sie einen Kontakte-Ordner mit zwei neuen Unterordnern. (

Abb. 6: Kontaktordner mit Unterordnern

Einträge des Kontakte-Ordners lesen

Nun wird es interessant: Mit der folgenden Prozedur lesen Sie die Vor- und Nachnamen aller Einträge der vorhandenen Kontakte-Ordner aus Outlook ein und zeigen diese im Testfenster an.

Dabei ist zu beachten, dass die Prozedur auch alle direkten Unterordner berücksichtigt.

Sub AdressenAnzeigen()    

    Dim olAnwendung As Outlook.Application

    Dim olNamespace As Outlook.NameSpace

    Dim olKontaktordner As Outlook.MAPIFolder

    Dim olKontakte As Outlook.Items

    Dim olKontakt As Outlook.ContactItem    

    Dim Unterordner As Outlook.Folders

    Dim AnzahlUnterordner As Integer

    Dim i As Integer

    On Error GoTo Adressenanzeigen_err    

    Set olAnwendung = New Outlook.Application

    Set olNamespace = olAnwendung.GetNamespace("MAPI")

    Set olKontaktordner = olNamespace.GetDefaultFolder(olFolderContacts)

    Set olKontakte = olKontaktordner.Items

    Debug.Print olKontaktordner.Name

    For Each olKontakt In olKontakte

        Debug.Print "  " & olKontakt.FirstName & " " & olKontakt.LastName

    Next

    Set Unterordner = olKontaktordner.Folders

    AnzahlUnterordner = Unterordner.Count

    For i = 1 To AnzahlUnterordner

        Set olKontakte = Unterordner.Item(i).Items

        Debug.Print Unterordner.Item(i).Name

        For Each olKontakt In Unterordner.Item(i).Items

            Debug.Print "  " & olKontakt.FirstName & " " & olKontakt.LastName

        Next

    Next    

    Exit Sub

Adressenanzeigen_err:

    If Err.Number = 13 Then Resume Next

End Sub

Nach dem Deklarationsteil erstellt die Prozedur zunächst die benötigten Objekte. Neben dem Objekt Kontaktordner als Standardordner legt die Prozedur hier auch das Objekt Unterordner des Typs Folders fest.

Anschließend wertet die Prozedur zunächst die Kontakteinträge aus, die sie im Objekt Kontaktordner finden kann. Dann untersucht sie den Kontaktordner nach Unterordnern. Falls Unterordner vorhanden sind, ermittelt die Prozedur deren Namen und gibt die vorhandenen Einträge aus.

Kontakte von Outlook in eine Access-Tabelle übernehmen

Nachdem Sie sich nun ausgiebig mit dem Objektmodell von Outlook auseinandergesetzt haben, sollen Sie endlich die Möglichkeit bekommen, einige Kontaktdatensätze aus Outlook in ihre eigene Datenbank einzufügen.

Erstellen einer Tabelle für Kontakte

Wenn Sie noch keine Tabelle für Ihre Kontakte erstellt haben, können Sie das schnell tun. Tab. 1 enthält die Felder, die auch das erste Registerblatt eines Kontaktes in Outlook anzeigt (Abb. 7).

Abb. 7: Adressinformationen in Outlook

Erstellen Sie für das Beispiel eine Tabelle, die alle in Tab. 1 aufgelistete Informationen enthält. Erstellen Sie zusätzlich als erstes Feld ein Primärindexfeld mit der Bezeichnung KontaktNr. Beachten Sie, dass nicht für alle Eigenschaften des Kontaktes ein Wert vorhanden sein muss. Setzen Sie daher die Eigenschaft Leere Zeichenfolge für alle Felder der Tabelle außer dem Primärindex auf den Wert Ja. Anschließend speichern Sie die Tabelle unter dem Namen tblKontakte.

Doppelte Einträge verhindern

Möglicherweise befindet sich in Ihren Outlookdaten der eine oder andere doppelte Eintrag. Vielleicht entwickelt sich Ihre Outlook-Adressenliste auch unabhängig von Ihrer Access-Adressenliste weiter und Sie möchten die beiden Listen von Zeit zu Zeit synchronisieren. Damit Sie keinen Eintrag doppelt anlegen, sollten Sie festlegen, wann ein neuer Listeneintrag nicht erfolgen soll. Sinnvoll ist beispielsweise, keine zwei Einträge mit identischem Vor- und Nachnamen zuzulassen. Sie können das ganz einfach verhindern: Legen Sie einfach einen zusammengesetzten eindeutigen Schlüssel fest, der die beiden Felder Vorname und Nachname enthält.

Gehen Sie dabei folgendermaßen vor:

  • Öffnen Sie die Tabelle tblKontakte in der Entwurfsansicht.
  • Öffnen Sie mit dem Menübefehl Ansicht( Indizes den Dialog Indizes.
  • Fügen Sie einen neuen Schlüssel gemäß Abb. 8 hinzu.
  • Setzen Sie anschließend die Eigenschaften Eindeutig und Nullwerte Ignorieren auf den Wert Ja.
  • Abb. 8: Ein neuer eindeutiger Schlüssel

    Wenn Sie per VBA auf die einzelnen Eigenschaften eines Kontaktes zugreifen möchten, müssen Sie dazu die englische Bezeichnung des Kontaktes verwenden. Die folgende Tabelle enthält die wichtigsten Eigenschaften und deren englische Übersetzung. Wenn Sie nicht die geschäftliche Adresse, sondern beispielsweise die Privatadresse eines Kontaktes ermitteln möchten, ersetzen Sie bei den englischen Bezeichnungen einfach Business durch Home.

    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:

    Verwandte Beiträge:

    Outlook: Mails

    Excel-Import-Assistent im Eigenbau

    Excel-Daten importieren mit TransferSpreadsheet

    Vertikale Menüleisten

    Serien-E-Mails mit Access und Outlook

    Datenbanken als Outlook 2002-Anhang öffnen

    Adressverwaltung mit Outlookschnittstelle

    Adressverwaltung mit Outlook-Schnittstelle, Teil 2

    Datenübernahme von Datenbank zu Datenbank

    Serienbriefe mit Word und Access

    Datenaustausch zwischen Excel und Access

    Verleihen und Entleihen mit Access und Outlook

    Mail verwenden ohne Outlook

    Importieren von Textdateien

    Textvorlagen mit Daten füllen

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.