Hallo Gast53843,
ja, das ist eine Möglichkeit, die auch funktioniert:
Sub Test()
Dim sngTZNr, sngLRegKey As Single
Dim strText, strCmd As String
Dim vTZI As Variant
Const cRegKey As String = """HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones"""
'New Zealand Standard Time 26
Const cTZI As String = """HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\New Zealand Standard Time"""
sngLRegKey = Len(cRegKey)
strCmd = "cmd /c REG QUERY " & cRegKey & " /se #"
TimeZoneList = Split(CreateObject("wscript.shell").exec(strCmd).stdout.readall, vbCrLf)
sngTZNr = UBound(TimeZoneList)
'MsgBox sngTZNr
'strText = "#####" & vbCrLf
For i = 4 To sngTZNr
strText = strText & Mid(TimeZoneList(i), sngLRegKey) & vbCrLf
'MsgBox TimeZoneList(i)
Next i
'MsgBox strText
strCmd = "cmd /c REG QUERY " & cTZI & " /v " & "TZI"
'MsgBox strCmd
TZIFull = Split(CreateObject("wscript.shell").exec(strCmd).stdout.readall, vbCrLf)
TimeZoneInfo = Split(TZIFull(2), " ")
' For i = 0 To UBound(TimeZoneInfo)
' MsgBox i & ":" & TimeZoneInfo(i)
' Next i
vTZI = TimeZoneInfo(3)
MsgBox vTZI
End Sub
Der Nachteil ist aber, dass ich aus diesem vTZI-Wert, die Differenz zu UTC sowohl für Sommer- als auch für Winterzeit berechnen muss. Das ist bestimmt machbar aber kompliziert.
Diese Info könnte ich direkt aus Windows über die TimeZoneInfo-Klasse (TimeZoneInfo.FindSystemTimeZoneById). Deswegen möchte ich die API verwenden.
Geht das aus VBA?
VG
S@M
|