Registryeinträge für VBA-Anwendungen

Die Registry von Windows ein undurchschaubarer Dschungel an Einstellungen. Wenn man nicht weiß, was man tut, können Änderungen an diesen Einstellungen zu Problemen beim Einsatz von Windows oder Anwendungen kommen. Es gibt einige API-Funktionen, mit denen man auch per VBA Änderungen an der Registry vornehmen kann. Die API-Programmierung ist aber grundsätzlich ein Profithema, und erst Recht sollten Einsteiger mit API-Funktionen nicht die Registry manipulieren. Zum Glück hat Microsoft jedoch einen Satz von VBA-Funktionen bereitgestellt, mit denen man halbwegs sicher Informationen in die Registry schreiben und diese auch wieder auslesen kann. Der Clou ist, dass man damit einen speziell für VB- und VBA-Anwendungen vorgesehenen Teil der Registry nutzen kann. In diesem Beitrag stellen wir diese Funktionen vor und zeigen, welchen Bereich in der Registry sich damit nutzen lässt.

Die Windows-Registry speichert eine Vielzahl von Daten, die für den Betrieb des Windows-Betriebssystems und installierter Anwendungen notwendig sind. Dazu gehören Konfigurationsinformationen und Einstellungen für Hardware, Software, Benutzerprofile und Systemressourcen.

Konkret umfasst dies Treiberinformationen, Benutzerkonten, installierte Programme, Systemdienste, Dateizuordnungen, System- und Anwendungsoptionen sowie Netzwerkeinstellungen. Diese Daten sind in einer hierarchischen Struktur organisiert, die als Registry bezeichnet wird.

Hier gibt es verschiedene Bereiche, von denen vor allem der Bereich HKEY_LOCAL_MACHINE und HKEY_CURRENT_USER interessant sind. Der Unterschied ist, dass HKEY_LOCAL_MACHINE Informationen speichert, die für alle Benutzer bereitstehen sollen, während HKEY_CURRENT_USER nur Informationen speichert, die mit dem aktuellen Benutzer in Zusammenhang stehen.

Wir schauen uns in diesem Beitrag einen Bereich der Registry an, der ein Teilbereich von HKEY_CURRENT_USER ist. Damit ist dieser Speicherort für Informationen in der Registy der perfekte Ort für Daten, die in Zusammenhang mit der Benutzung einer Anwendung durch den aktuellen Benutzer stehen.

Mit den nachfolgend vorgestellten VBA-Funktionen können wir also prima Daten in der Registry speichern, die bei der Arbeit mit einer Anwendung anfallen und aus verschiedenen Gründen dauerhaft gespeichert werden sollen – beispielsweise, um diese beim nächsten Start der Anwendung wieder abzurufen.

Bereich für VB und VBA

Als Erstes schauen wir uns den Bereich genauer an, in dem wir unsere Anwendungsdaten speichern können.

Dazu öffnen wir die Registry, was zum Beispiel gelingt, indem wir den Text Reg in die Windows-Suche eingeben und dann das Ergebnis Registrierungs-Editor auswählen. Dies öffnet das Fenster Registrierungs-Editor. Hier können wir direkt zum folgenden Pfad navigieren:

Computer\HKEY_CURRENT_USER\Software\VB and VBA Program Settings

Darunter befinden sich Einträge in einer fest vorgegebenen Hierarchie. Die erste Ebene, in der wir im Screenshot die Namen von Anwendungen sehen, ist für die einzelnen Anwendungen vorgesehen.

In der zweiten Ebene können wir für jede Anwendung unterschiedliche Sektionen einrichten, sofern dies nötig ist (siehe Bild 1).

Bereich der Registry für VB- und VBA-Anwendungen

Bild 1: Bereich der Registry für VB- und VBA-Anwendungen

Wir müssen aber zumindest eine Sektion anlegen, um mit den gleich vorgestellten VBA-Funktionen auf die Daten zugreifen zu können.

Diese wiederum befinden sich als Name-Wert-Paare in den einzelnen Sektionen. Neben dem Namen legen wir einen Wert fest, wobei wir mit den VBA-Funktionen aus diesem Beitrag ausschließlich Text-Einträge anlegen können.

Registry-Eintrag anlegen

Schreiten wir direkt zur Tat und legen einen Registryeintrag per VBA an. Nehmen wir an, unsere Anwendung heißt aiuRegistrybeispiele. Die Sektion soll Optionen heißen. Damit haben wir schon zwei der vier Parameter der Anweisung SaveSetting. Hier sind die Optionen in der Übersicht:

  • AppName: Name der Anwendung
  • Section: Sektion
  • Key: Name des Schlüssels
  • Setting: Wert der Einstellung

Mit der folgenden Anweisung legen wir einen ersten Eintrag an:

SaveSetting "aiuRegistrybeispiele", "Optionen", _
     "Beispielkey", "Beispielsetting"

Dieser Eintrag sieht anschließend wie in Bild 2 aus.

Selbst angelegter Eintrag in der Registry

Bild 2: Selbst angelegter Eintrag in der Registry

Registry-Eintrag auslesen

Um diesen Eintrag wieder auszulesen, verwenden wir die Funktion GetSetting. Diese erwartet ebenfalls vier Parameter, von denen der letzte allerdings optional ist.

Die ersten drei stimmen mit denen der Anweisung SaveSetting überein, der letzte heißt Default und legt einen Wert fest, der von der Funktion zurückgegeben werden soll, wenn der Registry-Eintrag nicht gelesen werden kann.

Wenn wir wissen, dass ein Eintrag vorhanden ist, reichen die ersten drei Parameter. Die folgende Anweisung ruft den zuvor erstellten Eintrag ab und gibt diesen im Direktbereich des VBA-Editors aus:

Debug.Print GetSetting("aiuRegistrybeispiele", _
     "Optionen", "Beispielkey")

Eintrag nicht vorhanden

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar