Не приходилось ли вам работать со "временем" в VBA? Поясню: есть необходимость сделать часы на форме. И все бы нечего, да вот нужно так, чтобы часы всегда показывали к примеру московское время. Например, приложение запустят на ПК с временем, Хабаровск, Иркутск и т.д.(или аналогичный часовой пояс системного времени), а программа всегда показывает время по Москве. Поскольку оно откомпилировано, то юзер не сможет поменять его сам, да он и не должен иметь такой возможности... Я просто подумал, раз время в Windows устанавливается но часовым поясам, значит их можно как-то достать из системы... Но пока не нашел как...
Function GetTimeZoneAtPresent() As String 'Updated by Extendoffice 20180814 Dim xObjIs, xObjI On Error GoTo ER Set xObjIs = GetObject("winmgmts:\\. oot\cimv2").ExecQuery("Select * From Win32_TimeZone") If xObjIs.Count = 1 Then For Each xObjI In xObjIs If Len(xObjI.Caption) > 1 Then GetTimeZoneAtPresent = xObjI.Caption Exit Function Else GetTimeZoneAtPresent = "Null" Exit Function End If Next End If ER: GetTimeZoneAtPresent = "Failed" End Function Эту функцию уставляете в модуль; она возвращает в текстовом виде наименование часового пояса и смещение относительно GMT. Дальше вычленяем смещение и переводим к нужному нам часовому поясу 😊
ВНИМАНИЕ! Поддержать канал можно через Сбербанк 2202 2023 5272 6164
Рассказано четко и все по полочкам. Большое спасибо.
Спасибо!
Коротко, ясно, по делу. Как всегда отлично!
Не приходилось ли вам работать со "временем" в VBA?
Поясню: есть необходимость сделать часы на форме. И все бы нечего, да вот нужно так, чтобы часы всегда показывали к примеру московское время.
Например, приложение запустят на ПК с временем, Хабаровск, Иркутск и т.д.(или аналогичный часовой пояс системного времени), а программа всегда показывает время по Москве. Поскольку оно откомпилировано, то юзер не сможет поменять его сам, да он и не должен иметь такой возможности...
Я просто подумал, раз время в Windows устанавливается но часовым поясам, значит их можно как-то достать из системы... Но пока не нашел как...
Вот здесь посмотрите: (тащить из интернета и ставить его вместо Now()): www.cyberforum.ru/ms-access/thread1440090.html
@@msaccess-gk да, я читал уже этот пост. Но в моем случае нет интернета. ПК даже не в сети. Просто стоят в разных уголках нашей страны )
@@Sfinxsx Тогда пользователь пусть вводит свой часовой пояс. И к нему прикручивайте время
Function GetTimeZoneAtPresent() As String
'Updated by Extendoffice 20180814
Dim xObjIs, xObjI
On Error GoTo ER
Set xObjIs = GetObject("winmgmts:\\.
oot\cimv2").ExecQuery("Select * From Win32_TimeZone")
If xObjIs.Count = 1 Then
For Each xObjI In xObjIs
If Len(xObjI.Caption) > 1 Then
GetTimeZoneAtPresent = xObjI.Caption
Exit Function
Else
GetTimeZoneAtPresent = "Null"
Exit Function
End If
Next
End If
ER:
GetTimeZoneAtPresent = "Failed"
End Function
Эту функцию уставляете в модуль; она возвращает в текстовом виде наименование часового пояса и смещение относительно GMT. Дальше вычленяем смещение и переводим к нужному нам часовому поясу 😊
@@EugeneSamaretz Благодарю! Обязательно попробую.