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 Zeichenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Neues aus unseren Magazinen
Listenfeld: Reihenfolge mehrerer Einträge...

Wir haben bereits in mehreren Beiträgen beschrieben, wie Sie die individuelle Reihenfolge von Elementen einer Tabelle über den Inhalt eines Feldes etwa namens »ReihenfolgeID« einstellen können –... [mehr]

Diagramme mit gefilterten Daten

In Ausgabe 2/2019 haben wir in zwei Artikeln die modernen Diagramme von Access vorgestellt. Im vorliegenen Beitrag zeigen wir Ihnen, wie Sie diese abhängig von den in einem Formular angezeigten... [mehr]

Benutzerverwaltung mit verschlüsselten...

Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und Kennwort an die Anwendung anmelden, sollten Sie sehr sensibel mit den in der Anwendung gespeicherten... [mehr]

HTML-Tabellen mit fester Kopfzeile

In den vorherigen Ausgaben von Access im Unternehmen und in der aktuellen Ausgabe arbeiten wir in einigen Beiträgen mit dem Webbrowser-Steuerelement und stellen Daten, die wir mit den Bordmitteln... [mehr]

Flexible HTML-Tabellen mit fester Kopfzeile

Im Beitrag »HTML-Tabellen mit fester Kopfzeile« haben wir gezeigt, wie Sie Daten aus einer bestimmten Abfrage in einem Webbrowser-Steuerelement so anzeigen, dass die Spaltenköpfe oben fixiert... [mehr]

Berechtigungen per HTML verwalten

Im Beitrag »Benutzerverwaltung mit verschlüsselten Kennwörtern« stellen wir eine Lösung vor, in der wir die Berechtigungen von Benutzergruppen an Datenbankobjekten definieren. Dort benötigen wir... [mehr]

Benutzer und Berechtigungen ermitteln

In den Beiträgen »Benutzerverwaltung mit verschlüsselten Kennwörtern« und »Berechtigungen per HTML verwalten« haben wir die Voraussetzungen für eine Benutzerverwaltung geschaffen. Im vorliegenden... [mehr]

Zugriffsrechte mit Datenmakros

Es gibt verschiedene Möglichkeiten, auf Basis des aktuell angemeldeten Benutzers sicherzustellen, dass dieser nur die für ihn vorgesehenen Aktionen mit Daten durchführen darf – beispielsweise durch... [mehr]

Kennwörter generieren

Für den einen oder anderen Zweck möchten Sie vielleicht Kennwörter generieren oder in einer Benutzeroberfläche die Möglichkeit zum Generieren von Kennwörtern anbieten. Wenn Sie etwa Benutzer zu... [mehr]

Neuer Datensatz von Frontend zu Backend

Für manche Themen gibt es keine kurze, prägnante Überschrift. In diesem Fall wollen wir zeigen, wie Sie einen neuen Datensatz anlegen, der in einer temporären Tabelle im Frontend gespeichert wird,... [mehr]