Hallo Welt,
ich möchte in einer Excel-Datei den Sonnenunter- und -aufgang an beliebigen Stellen der Erde berechnen (in Ortszeit).
Die Berechnung anhand beliebiger geo. Koordinaten kann ich durchführen (http://lexikon.astronomie.info/zeitgleichung/). Das Ergebnis ist allerdings in UTC-Zeit. Ich suche eine Möglichkeit, die Zeitverschiebung zu UTC für beliebige Zeitzonen zu berechnen.
Ich könnte eine eingeschränkte Liste meiner "Lieblingszeitzonen" (Europa, Urlaubsorte, interessante Orte) fest verdrahten aber diese haben auch noch eine Sommerzeit mit vielen verschiedenen Rechenregeln.
Einfacher ist es, diese Daten aus der Registry unter HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones auszulesen. Die API-Klasse dafür habe ich auch schon gefunden: TimeZoneInfo Class (https://msdn.microsoft.com/en-us/library/system.timezoneinfo(v=vs.110).aspx).
Nun meine Frage: wie kann ich aus VBA raus eine API-Klasse ansprechen?
Sagen wir konkret die Funktionen TimeZoneInfo.GetSystemTimeZones() und TimeZoneInfo.FindSystemTimeZoneById().
Durch die erste Funktion kann ich alle bekannten Zeitzonen auslesen und in eine Auswahlliste einspielen, aus der ich die gewünschte TZ auswähle. Mit der zweiten Funktion kann ich den Offset (Standard Time und DST) zu UTC bestimmen.
Den Link zu Pearson (http://www.cpearson.com/excel/TimeZoneAndDaylightTime.aspx) habe ich auch schon gefunden. Auf den wird in vielen Beiträgen verwiesen aber der hilft mir nicht, weil die gewonnen Daten nur den Offset der Lokalzeit zu UTC bestimmen und nicht für eine beliebige Zeitzone (falls ich mich irre, bitte korrigieren).
Also noch mal: wie kann man in Excel-VBA die TimeZoneInfo Class aus dem System Namespace instantiieren?
Vielen Dank
S@M