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 5/2007.

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

Synchronisieren Sie in Access verwaltetete Aufgaben mit Outlook und umgekehrt.

Techniken

Outlook, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

Outlookaufgaben.mdb

Shortlink

498

Outlook-Aufgaben

André Minhorst, Duisburg

Neben Kontakten, Terminen und Mails beherbergt Outlook noch weitere Informationen - zum Beispiel die Aufgaben. Diese lassen sich innerhalb von Outlook in Kombination mit den anderen Objekten nutzen. Wie Sie von Access aus auf Outlook-Aufgaben zugreifen und diese von Outlook nach Access und wieder zurück bewegen, erfahren Sie in diesem Beitrag.

Aufgaben

Outlook-Aufgaben liefern dem gestressten Menschen die Möglichkeit, seine Aufgaben zu verwalten, diese in Kategorien einzusortieren und Termine zur Fertigstellung festzulegen, auf die Outlook zu fest definierten Zeitpunkten aufmerksam macht. Genau wie für Mails, Kontakte und Termine gibt es auch für Aufgaben ein spezielles Outlook-Formular, in das Sie die aufgabenspezifischen Informationen eintragen können (s. Abb. 1).

pic001.tif

Abb. 1: Eine Aufgabe in Outlook (hier in der Version 2007)

Verweis

Als Erstes benötigen Sie, wie beim komfortablen VBA-Zugriff auf andere Anwendungen, einen Verweis auf die Microsoft Outlook x.0 Object Library, wobei x der aktuell auf dem Rechner befindlichen Office-Version entspricht. Den Verweis legen Sie im Dialog Verweise an, den Sie in der VBA-Entwicklungsumgebung mit dem Menübefehl Extras/Verweise öffnen können.

Sie können auch ohne Verweis arbeiten, müssen dabei aber auf den Komfort von IntelliSense verzichten.

Wie schon in vielen anderen Beiträgen erwähnt, ist die optimale Lösung die Programmierung des Zugriffs auf externe Anwendungen unter Verwendung einer Bibliothek und Deklaration der Variablen mit den konkreten Datentypen und - wenn Sie die Anwendung weitergeben oder selbst auf Rechnern mit anderen Office-Versionen einsetzen möchten - die anschließende Umstellung auf Late Binding: Dabei wird der Verweis wieder entfernt, die Datentypen werden bei der Deklaration auf Object umgestellt und gegebenenfalls Konstanten sowie Typdefinitionen ersetzt beziehungsweise deklariert. Im Rahmen dieses Beitrags arbeiten Sie allerdings mit Early Binding.

Zugriff auf die Aufgaben von Outlook

Der Zugriff funktioniert ähnlich wie der Zugriff auf die übrigen Outlook-Objekte. Bereits im Beitrag Outlooktermine im Griff (Shortlink 439) haben wir einen Weg aufgezeigt, um möglichst komfortabel an Outlook und seine Objekte zu gelangen (was sich übrigens leicht auf andere Anwendungen übertragen lässt). Dies greift auch dieser Artikel auf, wie Listing 1 zeigt: Die dortigen Property Get-Funktionen liefern Verweise auf das Outlook.Application-Objekt, auf das MAPI-Namespace-Objekt sowie auf den Aufgabenordner zurück. Dabei können Sie im Code ganz einfach die Bezeichnungen der Property Get-Funktionen verwenden, um auf die jeweiligen Objekte zuzugreifen. Diese werden beim ersten Zugriff angelegt und in einer der mit m beginnenden Objektvariablen gespeichert und können fortan darüber erreicht werden.

Listing 1: Öffentliche Eigenschaften liefern unkompliziert Verweise auf Outlook-Elemente.

Option Compare Database

Option Explicit

Dim mOutlook As Outlook.Application

Dim mMAPINamespace As Outlook.NameSpace

Dim mTaskFolder As Outlook.Folder

Public Property Get GetOutlook() As _
Outlook.Application

   If mOutlook Is Nothing Then

     On Error Resume Next

     Set mOutlook = _
CreateObject("Outlook.Application")

     If Err.Number = 429 Then

       MsgBox "Outlook konnte nicht gestartet werden."

       Exit Property

     End If

   End If

   Set GetOutlook = mOutlook

End Property

Public Property Get GetMAPINamespace() As Outlook.NameSpace

   If mMAPINamespace Is Nothing Then

     Set mMAPINamespace = GetOutlook.GetNamespace("MAPI")

   End If

   Set GetMAPINamespace = mMAPINamespace

End Property

Public Property Get GetTaskFolder() As Outlook.Folder

   If mTaskFolder Is Nothing Then

     Set mTaskFolder = GetMAPINamespace. _
GetDefaultFolder(olFolderTasks)

   End If

   Set GetTaskFolder = mTaskFolder

End Property

Das Beste ist, dass die Funktionen aufeinander aufbauen - die MAPI-Namespace-Funktion beinhaltet also das Erzeugen beziehungsweise den Zugriff auf das Outlook.Application-Objekt und so weiter (s. Listing 1). Die Ausgabe etwa aller vorhandenen Termine gestaltet sich damit kinderleicht: Sie müssen einfach nur alle TaskItem-Objekte der Items-Auflistung von GetTaskFolder durchlaufen und die gewünschten Eigenschaften ausgeben (s. Listing 2).

Listing 2: Ausgabe aller Aufgaben-Elemente des Standardaufgabenordners von Outlook

Public Sub AufgabenAusgeben()

Dim objTaskItem As Outlook.TaskItem

For Each objTaskItem In GetTaskFolder.Items

Debug.Print objTaskItem.Subject, objTaskItem.DueDate

Next objTaskItem

End Sub

Aufgaben in der Datenbank speichern

Wenn Sie Aufgaben in einer Access-Datenbank speichern und diese mit denen in Outlook synchronisieren möchten, gibt es prinzipiell nur eines zu beachten: Sie müssen dafür sorgen, dass beim Export von Aufgaben von Access nach Outlook geprüft wird, ob eine Aufgabe dort schon vorhanden ist, und diese gegebenenfalls überschreiben und umgekehrt. Die zwar eindeutige, aber nicht beständige Eigenschaft EntryID von Outlook-Objekten wie Terminen, Kontakten, E-Mails oder Aufgaben können Sie dazu nicht heranziehen - sie ändert beim Wechseln des Outlook-Ordners oder beim Synchronisieren mit mobilen Geräten den Wert.

Im Beitrag Outlooktermine im Griff (Shortlink 439) wurde zur eindeutigen Kennzeichnung der Aufgaben eine benutzerdefinierte Eigenschaft verwendet. In diesem Beitrag stellen wir eine weitere Möglichkeit vor - das Speichern des ID-Werts in einer nicht für andere Zwecke verwendeten Eigenschaft. Falls Sie sich also schon einmal im Objektmodell von Outlook umgesehen und sich gefragt haben, wozu man eigentlich eine Eigenschaft namens BillingInformation in Mails, Terminen, Kontakten und Aufgaben benötigt - hier ist die Antwort: nämlich als Speicherort für die ID zur Synchronisation mit in Access gespeicherten Datensätzen mit gleichen Informationen ...

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.