Aktuelle Umgebungsvariable in Excel auslesen
Schritt-für-Schritt-Anleitung
Um eine aktuelle Umgebungsvariable in Excel auszulesen, kannst du VBA verwenden. Befolge diese Schritte:
-
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen
> Modul
.
-
Kopiere den folgenden Code in das Modul:
Sub SystemVariables()
Dim iIndex As Integer
Dim sResult As String
Dim sKey As String
Dim sValue As String
Dim iPos As Integer
iIndex = 1
Do
sResult = Environ(iIndex)
If sResult <> "" Then
iPos = InStr(sResult, "=")
sKey = Left$(sResult, iPos - 1)
sValue = Mid$(sResult, iPos + 1)
MsgBox (sKey & " , " & sValue)
End If
iIndex = iIndex + 1
Loop Until sResult = ""
End Sub
-
Führe das Makro aus: Gehe zu Run
> Run Sub/UserForm
oder drücke F5
.
-
Überprüfe die angezeigten Umgebungsvariablen in den Meldungsfenstern.
Häufige Fehler und Lösungen
Alternative Methoden
Wenn das Auslesen der Umgebungsvariablen über Environ()
nicht die gewünschten Ergebnisse liefert, kannst du die Registry direkt abfragen. Hier ist ein Beispielcode:
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias _
"RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) _
As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _
"RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
ByVal lpReserved As Long, lpType As Long, lpData As Any, _
lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long
Sub readRegKey()
Dim Retval As Long
Dim hKey As Long
Dim TmpSNum As String * 255
Retval = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
"System\CurrentControlSet\Control\Session Manager\Environment", 0&, KEY_READ, hKey)
If Retval <> 0 Then
MsgBox "Der Schlüssel konnte nicht geöffnet werden."
Exit Sub
End If
Retval = RegQueryValueEx(hKey, "Path", 0, REG_SZ, _
ByVal TmpSNum, Len(TmpSNum))
If Retval <> 0 Then
MsgBox "Der Schlüsselwert konnte nicht gelesen oder gefunden werden."
Exit Sub
End If
MsgBox "Path: " & Left$(TmpSNum, InStr(1, TmpSNum, vbNullChar) - 1), , "Produkt-Key"
Retval = RegCloseKey(hKey)
End Sub
Praktische Beispiele
Ein praktisches Beispiel zur Nutzung der setx.exe
:
setx MY_VARIABLE "5"
Nachdem diese Umgebungsvariable gesetzt wurde, kannst du den oben genannten VBA-Code verwenden, um den aktuellen Wert auszulesen.
Tipps für Profis
- Achte darauf, dass Änderungen an Umgebungsvariablen möglicherweise erst nach einem Neustart von Excel sichtbar werden.
- Verwende
nullterminierte Strings
, um sicherzustellen, dass keine unerwünschten Zeichen bei der Rückgabe von Werten auftreten.
- Halte deine VBA-Referenzen aktuell, um Komplikationen zu vermeiden.
FAQ: Häufige Fragen
1. Wie oft kann ich eine Umgebungsvariable ändern?
Du kannst eine Umgebungsvariable so oft ändern, wie du möchtest. Jede Änderung wird jedoch erst nach einem Neustart von Excel oder des Systems wirksam.
2. Warum wird der Wert der Umgebungsvariable nicht aktualisiert?
Wenn du setx.exe
verwendest, kann es sein, dass Excel den Wert aus dem Systemstartcache liest. In solchen Fällen solltest du den Wert direkt aus der Registry lesen.