Acceder a la configuración Regional desde Macro

Hola,
Os expongo mi problema,
Quiero que una celda en excel, la cual muestra siempre la hora, salga siempre en GMT+1 independientemente de la región horaria que tenga configurado el usuario que abre el excel.
Por ejemplo, si alguien abre el excel en Madrid, y son las 18:00:00hrs, en la celda aparece las 18:00:00hrs.
Si a la misma hora alguien abre el excel en New York, y allí son las 12:00:00hrs, en la celda debe aparecer igualmente las 18:00:00hrs que se corresponde a la hora en GMT+1
¿Cómo puedo conseguir ésto?
Gracias,

1 Respuesta

Respuesta
1
No es exactamente lo que necesitas pero quizás te sirva. Yo me volví medio loco para conseguir averiguar la diferencia entre la hora del sistema y la GMT (la del meridiano Greenwich) usando VBA.
Al final, después de investigar bastante, conseguí escribir la siguiente función:
Private Type SYSTEMTIME
    WYear As Integer
    WMonth As Integer
    WDayOfWeek As Integer
    WDay As Integer
    WHour As Integer
    WMinute As Integer
    WSecond As Integer
    WMilliseconds As Integer
End Type
Private Type TIME_ZONE_INFORMATION
    Bias As Long
    StandardName(0 To 31) As Integer
    StandardDate As SYSTEMTIME
    StandardBias As Long
    DaylightName(0 To 31) As Integer
    DaylightDate As SYSTEMTIME
    DaylightBias As Long
End Type
Private Declare Function GetTimeZoneInformation Lib "kernel32" _
    (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
Public Function Sistema_a_GMT() As Long
    'Devuelve la diferencia entre el uso horario del sistema y el GMT _
     expresada en minutos
    Dim TZI As TIME_ZONE_INFORMATION
    GetTimeZoneInformation TZI
    Sistema_a_GMT = TZI.Bias
End Function
La función en sí está al final, lo demás son declaraciones que necesita la llamada a la API, que es con la que se consigue averiguar la zona horaria que tiene configurado el sistema y la diferencia entre la misma y la GMT.
Hay que tener en cuenta que lo que devuelve la función es el número de minutos de diferencia. Por ejemplo, si se pone en una celda
=Sistema_a_GMT()
En un equipo que tenga la hora oficial de España devolverá -60, si fuera la hora de Canarias devolvería 0, etc.
Gracias por intentarlo.
La verdad es que tu solución se parece (y mucho) en la que finalmente he adoptado y que me funciona para calcular directamente la hora a GMT.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas