Benutzerdefinierte Outlook-Eigenschaften

Wenn Sie ein Abonnement des Magazins 'Access im Unternehmen' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.

Benutzerdefinierte Outlook-Eigenschaften

Wenn Sie Outlook mit automatischen Funktionen ausstatten, die einen Zugriff auf eine Datenbankanwendung erfordern (in unserem Fall meist auf eine Access-Datenbank), dann müssen Sie irgendwo den Pfad der Datenbankdatei hinterlegen. Dies könnte man vorübergehend statisch in einem Code-Modul erledigen, aber für professionelle Anwendungszwecke sollte dieser Pfad nicht nur geändert werden können, sondern auch an einem anderen Ort gespeichert werden.

In einigen Beiträgen in Access im Unternehmen haben wir bereits von Outlook aus auf eine Access-Datenbank zugegriffen – zum Beispiel in der Projektzeiterfassung. Hier haben wir den Pfad dann schlicht in eine Konstante eingetragen, wie in folgendem Beispiel:

Public Const cStrDB As String = "C:UsersAndreMinhorstDropboxDatenAccessprojekteProjektzeiterfassungProjektzeiterfassung.accdb"

Dies funktioniert allerdings nur so lange, wie die Datenbankdatei sich auch an dem angegebenen Ort befindet. Verschieben Sie diese Datei, tritt beim Zugriff auf diese Datei ein Fehler auf. Gleiches gilt natürlich, wenn ein Leser des entsprechenden Beitrags den Code einfach in sein eigenes Outlook-Modul kopiert und diesen ausgeführt hat – die Wahrscheinlichkeit, dass die Datenbankdatei beim Leser genau im gleichen Verzeichnis liegt wie beim Autor, ist relativ gering (wenn auch nicht gleich Null). Dennoch möchte ich hier eine professionellere Technik nutzen und den Pfad zur Datenbankdatei erstens an einem anderen Ort unterbringen und diesen zweitens vor dem Zugriff prüfen, damit der Benutzer den Pfad gegebenenfalls manuell selbst aktualisieren kann.

Benutzerdefinierte Einstellung speichern

Zum Speichern einer benutzerdefinierten Einstellung (und zuerst zum Anlegen einer solchen Eigenschaft) verwenden wir einen der Ordner von Outlook, der zum Profil des aktuell angemeldeten Benutzers gehört. Dabei treffen wir in der Regel mit dem Ordner Posteingang den richtigen Ordner. Für einen solchen Ordner können Sie ein sogenanntes StorageItem-Element anlegen. Dieses Element wird automatisch erstellt, wenn Sie es erstmalig mit der Methode GetStorage eines Folder-Objekts abrufen. Dabei übergeben Sie mit dem ersten Parameter den Namen des StorageItem-Elements und mit dem zweiten die Art, wie es identifiziert werden soll. Für ein StorageItem-Objekt können Sie über die Auflistung UserProperties auf benutzerdefinierte Eigenschaften zugreifen. Wir verarbeiten diese Erkenntnisse in einer Funktion namens EigenschaftSetzen, die Sie in Listing 1 finden. Die Funktion erwartet drei Parameter:

Public Sub EigenschaftSetzen(strElement As String, strName As String, strWert As String)
     Dim objMAPI As Outlook.NameSpace
     Dim objFolder As Outlook.Folder
     Dim objStorageItem As Outlook.StorageItem
     Dim objUserProperty As Outlook.UserProperty
     Set objMAPI = Outlook.GetNamespace("MAPI")
     Set objFolder = objMAPI.GetDefaultFolder(olFolderInbox)
     Set objStorageItem = objFolder.GetStorage(strElement, olIdentifyBySubject)
     Set objUserProperty = objStorageItem.UserProperties.Add(strName, olText)
     objUserProperty.Value = strWert
     objStorageItem.Save
End Sub

Listing 1: Funktion zum Erstellen und Schreiben einer benutzerdefinierten Eigenschaft

  • strElement: Name des StorageItem-Elements
  • strName: Name der benutzerdefinierten Eigenschaft
  • strWert: Wert der benutzerdefinierten Eigenschaft

Die Funktion erstellt zunächst ein NameSpace-Objekt namens objMapi und füllt es mit dem MAPI-Namespace. Dann referenziert es mit der Variablen objFolder den standardmäßig als Posteingang definierten Ordner. Nun ruft es die GetStorage-Methode des Folder-Objekts auf und übergibt diesem den in strElement gespeicherten Namen für das StorageItem-Element.

Außerdem legt es mit dem Wert olIdentifyBySubject für den zweiten Parameter fest, dass der erste Parameter den Namen des Elements enthält. Dieser Aufruf kann keinen Fehler verursachen, da das StorageItem-Element, sofern noch nicht vorhanden, mit diesem Aufruf erstellt wird. Die folgende Anweisung nutzt dann die Add-Methode der UserProperties-Auflistung des StorageItem-Objekts, um eine neue benutzerdefinierte Eigenschaft zum StorageItem-Objekt hinzuzufügen. Dabei übergibt sie mit dem ersten Parameter den Namen der benutzerdefinierten Eigenschaft und mit dem zweiten den Datentyp, in diesem Fall olText für eine Texteigenschaft. Die neue Eigenschaft referenziert die Prozedur mit der Variablen objUserProperty. Diese Objektvariable liefert dann mit der Eigenschaft Value die Möglichkeit, den Wert festzulegen – in diesem Fall mit dem Wert des Prozedurparameters strWert. Schließlich speichert die Prozedur die neue benutzerdefinierte Variable mit der Save-Methode des StorageItem-Elements. Um einen Datenbankpfad in der benutzerdefinierten Eigenschaft Datenbankpfad im StorageItem-Element Ticketsystem zu speichern, verwenden Sie etwa den folgenden Aufruf:

EigenschaftSetzen "Ticketsystem", "Datenbankpfad",  "c:TestBeispieldatenbank.mdb"

Benutzerdefinierte Einstellung abrufen

Wenn Sie den Pfad zur Datei, beispielsweise zu einer Access-Datenbank, auf diese Weise mit dem Outlook-Ordner gespeichert haben, wollen Sie diesen auch bei Gelegenheit, etwa beim Start von Outlook, einlesen und verwenden. Dies erledigen wir mit der Funktion EigenschaftEinlesen aus Listing 2.

Public Function EigenschaftEinlesen(strElement As String, strName As String) As String
     Dim objMAPI As Outlook.NameSpace
     Dim objFolder As Outlook.Folder

Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.

Bitte geben Sie die Zahlenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Aktuell im Blog
Onlinebanking mit Access

Es ist geschafft: Endlich ist das Buch Onlinebanking mit Access fertiggeschrieben. Das war... [mehr]

Direktzugriff auf Tabellen und Felder

Die IntelliSense-Erweiterung für Tabellen und Felder hat mir soviel Spaß gemacht, dass ich gleich... [mehr]

IntelliSense für Tabellen und Felder

Wenn Sie mit dem VBA-Editor arbeiten und dort gelegentlich SQL-Anweisungen eingeben, müssen Sie... [mehr]

Download Access und SQL Server

Erfahren Sie, welche Schritte zum Download des aktuellen Stands des Buchs "Access und SQL Server"... [mehr]

Bilder in Access 2013

Wer die Bibliothek mdlOGL0710 von Sascha Trowitzsch oder ein ähnliches Modul aus meinen... [mehr]

Dynamische Ribbons

Immer wieder fragen Leser, wie man Ribbon-Elemente wie etwa Schaltflächen in Abhängigkeit... [mehr]

Die Blogmaschine

Einen kleinen Blog zusätzlich zum Shop zu betreiben ist eine tolle Sache. Hier lassen sich... [mehr]

Wegwerfadressen für die Newsletteranmeldung

Die Verwendung von Wegwerf-Adressen für die Nutzung aller möglichen Online-Dienste nimmt... [mehr]

Access und Facebook

Facebook und Access - das ist eine der wenigen Kombinationen, die ich noch nicht in die Mangel... [mehr]

Access und SQL Server - das Projekt

Mein neues Buch Access und SQL Server (gemeinsam mit Bernd Jungbluth) geht in die Endphase. Wer... [mehr]