Outlook-Aufgaben

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

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 (siehe Bild 1).

pic001.tif

Bild 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 …

Aufgabe mit ID anlegen

Eine Aufgabe mit einer in der Eigenschaft BillingInformation gespeicherten ID legen Sie etwa wie in Listing 3 an. Wenn die Aufgabe in einem Unterordner gespeichert werden soll, ändern Sie die Zeile

Listing 3: Anlegen einer Aufgabe mit einem bestimmten Wert für die Eigenschaft BillingInformation

Public Sub AufgabeMitIDInHauptordnerAnlegen()
Dim objTaskItem As Outlook.TaskItem
Set objTaskItem = GetTaskFolder.Items.Add
With objTaskItem .BillingInformation = 1 .Subject = "Beispielaufgabe" .DueDate = "1.1.2008" .Body = "Aufgabe, von Access erzeugt" .Save End With End Sub

Set objTaskItem = GetTaskFolder.Items.Add

in die folgende um (jeweils in einer Zeile):

Set objTaskItem = GetTaskFolder.Folders(strOrdnername).Items.Add

Suche nach Aufgaben per ID

Die Suche nach einem TaskItem-Element mit einer in der Eigenschaft BillingInformation gespeicherten ID gestaltet sich äußerst einfach. Die Funktion aus Listing 4 liefert – soweit vorhanden – einen Verweis auf das passende Objekt zurück.

Listing 4: Diese Funktion liefert einen Verweis auf ein Aufgaben-Element mit einer bestimmten ID

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

Schreibe einen Kommentar