Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Die Synchronisation von Outlook-Terminen in eine Access-Datenbank und wieder zurück ist ein sehr gefragtes Thema. In diesem Artikel schauen wir uns zunächst an, wie Sie Termine in Outlook lesen können. Dabei gibt es einige Feinheiten, die wir unter die Lupe nehmen. Die wichtigsten Informationen eines Termins wollen wir dabei in eine Access-Tabelle übertragen. Anlässe für das Einlesen von Outlook-Terminen gibt es genug – vielleicht möchten Sie die Geburtstage in eine Access-Datenbank übertragen oder einfach alle Termine für bestimmte Auswertungen erfassen.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 2004_OutlooktermineEinlesen.accdb.
Verweis auf Outlook und andere Vorbereitungen
Damit wir einfach per VBA auf Outlook und sein Objektmodell zugreifen können, fügen Sie dem VBA-Projekt der Beispieldatenbank einen Verweis auf die Bibliothek Microsoft Outlook x.0 Object Library.
Dazu öffnen Sie mit Alt + F11 den VBA-Editor und wählen den Menüeintrag Extras|Verweise aus. Im nun erscheinenden Dialog Verweise fügen Sie die genannte Bibliothek hinzu.
Außerdem benötigen wir im Folgenden einige Funktionen, um auf Outlook, das Namespace-Objekt und die Folder-Objekte von Outlook zuzugreifen. Diese erläutern wir ausführlich im Artikel Outlook-Ordner im Griff.
Zugriff auf den Kalender-Ordner
Mit den im oben genannten Artikel vorgestellten Techniken greifen wir ganz einfach auf den Termine-Ordner von Outlook zu. Verwenden Sie den Standard-Ordner zum Speichern von Terminen, nutzen Sie diesen Aufruf, um den Ordner zu referenzieren. Hier geben wir die Anzahl der enthaltenen Einträge in der Items-Auflistung aus:
GetCalendarFolder.Items.Count 639
Wenn Sie nicht den Standard-Kalender-Ordner verwenden, sondern beispielsweise einen Ordner namens Calendar unter dem Element iCloud, verwenden Sie diesen Aufruf:
GetFolderByPath("iCloud\Calendar").Items.Count
Alle Termine durchlaufen
Mit der folgenden Prozedur durchlaufen wir alle Termine, die sich im aktuellen Standard-Termin-Ordner befinden.
Dabei referenzieren wir den Termin-Ordner mit der Variablen objFolder und durchlaufen die Einträge anschließend in einer For Each-Schleife über alle Elemente der Auflistung Items von objFolder. Als Laufvariable verwenden wir dabei die Variable objAppointmentItem des Typs AppointmentItem.
Innerhalb der Schleife geben wir zu jedem Termin die EntryID, also den eindeutigen Identifizierer, und den Betreff des Termins aus:
Public Sub AlleTermineDurchlaufen() Dim objAppointmentItem As Outlook.AppointmentItem Dim objFolder As Outlook.Folder Set objFolder = GetCalendarFolder For Each objAppointmentItem In objFolder.Items With objAppointmentItem Debug.Print .EntryID & " " & .Subject End With Next objAppointmentItem End Sub
Neueste Termine einlesen
Damit haben wir nun einfach alle Termine des Ordners eingelesen. Das ist meist nicht zielführend, da Sie gegebenenfalls regelmäßig Termine einlesen und dann nur die neuen Termine einlesen wollen. Dem nähern wir uns nun langsam an.
Sie können zum Beispiel nur die neuesten Termine einlesen beziehungsweise die Sortierung beim Einlesen so festlegen, dass die neuesten Termine zuerst eingelesen werden.
Die Prozedur dazu sieht wie folgt aus und deklariert ein AppointmentItem-, ein Folder– und ein Items-Objekt.
Während Sie die ersten beiden bereits kennen, ist das Items-Element neu: Mit diesem können Sie eine Sammlung von Outlook-Elementen referenzieren, also beispielsweise eine Reihe von Terminen:
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo