VBA: Registry-Werte schreiben und lesen

Mit VBA auf die Registry zugreifen - so geht's

Von: Lorenz Hölscher
Stand: 4. Mai 2011
Anmelden um Kommentare zu schreiben

Downloads zu diesem Beitrag

Über den Autor: Lorenz Hölscher

bild80517

Lorenz Hölscher ist freiberuflicher Dozent, Berater und Programmierer mit Schwerpunkt Anwendungs-Programmierung. Vorrangig widmet er sich Access, Word und Excel sowie begleitenden grafischen Arbeiten. Er legt viel Wert auf benutzerfreundliche Oberflächen und ordentliches Design in Optik und Programmierung. Zu Hilfe kommen ihm da seine langjährigen "branchenfremden" Erfahrungen als Architekt, Layouter und Designer.

Lorenz Hölscher bietet eigene Hilfeseiten an und hat bei Microsoft Press mehrere Bücher veröffentlicht zu Access 2007, Access 2007 VBA, Word 2007 VBA und Access 2010.

Beiträge des Autors als Atom-Feed Atom-Feed: Neues von akademie.de

Mehrere Registry-Schlüssel

Mehrere Registry-Schlüssel finden

Da mit GetSetting() nur ein namentlich bekannter Schlüssel ermittelt werden kann, liefert die GetAllSettings()-Funktion ein Array aus allen Schlüssel-/Wert-Paaren der Sektion.

Es kann passieren, dass Ihr Code dem Benutzer relativ freie Eingaben in der Registry erlaubt. Dann können Sie später nicht wissen, wie die Schlüsselnamen hießen. Beispielsweise könnte der Benutzer Namen mit Adressen ermitteln, die Sie dort zwischenspeichern, damit er immer schnell darauf zugreifen kann.

Um das hier mit wenig Aufwand zu zeigen, erfolgt die Dateneingabe einfach mit einer InputBox()-Funktion zuerst für den Schlüsselnamen und anschließend für seinen Inhalt:

Sub SammleAdressen()
	Dim strName As String
	Dim strInhalt As String
	
	strName = InputBox("Bitte Adressbezeichnung angeben")
	If strName <> "" Then		'also nicht abgebrochen
		strInhalt = InputBox("Bitte Adresse eintippen")
		If strInhalt <> "" Then
			SaveSetting m_cstrAppName, "Adressen", strName, strInhalt
		End If
	End If
End Sub

Bild vergrößernEin paar Beispieldaten für die Adressen

Um nicht die bereits gespeicherten Optionen mit auszulesen, erfinden Sie hier einfach eine eigene Sektion Adressen, welche nur diese Werte enthält. Das erspart Ihnen das ansonsten eher mühsame Herausfiltern nur der gewünschten Adressen-Werte.

Mit den bisherigen Methoden wäre es nun nicht möglich, solche unbekannten Schlüsselnamen auszulesen. Dafür gibt es jedoch die GetAllSettings()-Funktion, welche solche Schlüsselnamen (und auch schon deren Inhalte!) ermittelt. Diese werden als zweidimensionales Array ausgelesen und müssen daher an eine Variant-Variable zurückgegeben werden:

Sub FindeAdressen()
	Dim varAdressen As Variant
	Dim strMerken As String
	Dim intZaehler As Integer
	
	varAdressen = GetAllSettings(m_cstrAppName, "Adressen")
	For intZaehler = 0 To UBound(varAdressen)
		strMerken = strMerken & vbCrLf & varAdressen(intZaehler, 0) & _
			": " & varAdressen(intZaehler, 1)
	Next
	
	MsgBox "Alle Adressen:" & vbCrLf & strMerken
End Sub

In jeder Zeile des varAdressen-Arrays steckt jeweils ein Name/Wert-Paar, also in dessen erster Spalte der Name und in dessen zweiter Spalte der Wert. Da auch dieses Array Null-basiert ist, sind die zugehörigen Spaltennummern 0 und 1.

Diese Seite ist für Mitglieder von akademie.de reserviert.

Möchten Sie die Mitgliedschaft 14 Tage kostenlos testen und den Beitrag komplett lesen?

Ich bin bereits Mitglied
Jetzt Probemitglied werden
Ich kann in den 14 Tagen Probezeit formlos z.B. per E-Mail stornieren. Wenn ich das nicht tue, entscheide ich mich für ein