Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
21.05.2024, 10:06:05

Войти
Добавляйтесь в нашу группу ВКонтакте - будьте в курсе всех новых событий сайта, узнавайте первым обо всех акциях и новых статьях!
33 266 Сообщений в 5 461 Тем от 6 769 Пользователей
Последний пользователь: Fortuna
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Декларации для 64 бит
Страниц: [1]   Вниз
Печать
Автор Тема: Декларации для 64 бит  (Прочитано 2468 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mike_B
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 10


Просмотр профиля
« : 26.02.2021, 14:37:48 »

Добрый день.
Хитрые юзеры меняют формат даты (например, на полный в духе Пт 26.02.2021), а у меня рассчитано на ДД.ММ.ГГГГ. Даже не у меня, а календаря.
Сделал смену формата даты и возврат после. На 7-64 с офисом 32 бит работает. Декларации ниже.
Но вот вопрос - как будет на 64 ? Именно эти декларации менять надо или нет? Как понять и какими будут?
Что за тип lParam As Any у PostMessage?

Код: (vb)
#If VBA7 Then
   Public Declare PtrSafe Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
   Public Declare PtrSafe Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Long
   Public Declare PtrSafe Function GetSystemDefaultLCID Lib "kernel32" Alias "GetSystemDefaultLCID" () As Long
   Public Declare PtrSafe Function GetUserDefaultLCID Lib "kernel32" Alias "GetUserDefaultLCID" () As Long
   Public Declare PtrSafe Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As Long
#Else
   Public Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
   Public Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Boolean
   Public Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
   Public Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
   Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
#End If


Почему вопрос - недавно такое видел:

Код: (vb)
#If Win64 Then
    #If VBA7 Then    ' Windows x64, Office 2010
        Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
                (ByVal pCaller As LongLong, ByVal szURL As String, ByVal szFileName As String, _
                 ByVal dwReserved As LongLong, ByVal lpfnCB As LongLong) As LongLong
    #Else            ' Windows x64,Office 2003-2007
        Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
                                           (ByVal pCaller As LongLong, ByVal szURL As String, ByVal szFileName As String, _
                                            ByVal dwReserved As LongLong, ByVal lpfnCB As LongLong) As LongLong
    #End If
#Else
    #If VBA7 Then    ' Windows x86, Office 2010
        Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
                (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, _
                 ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
    #Else            ' Windows x86, Office 2003-2007
        Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
                                           (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, _
                                            ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
    #End If
#End If
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 838



Просмотр профиля WWW
« Ответ #1 : 26.02.2021, 14:47:07 »

Сделал смену формата даты и возврат после
это где так жестко приходится извращаться, чтобы формат системной даты менять?
как будет на 64
Смотря на чем этот 64-ый работает. Если офис ниже 2010 - то надо дополнительные блоки для этого писать(именно как на примере у Вас ниже).
Что за тип lParam As Any
это вроде Variant в VBA - означает любой.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Mike_B
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 10


Просмотр профиля
« Ответ #2 : 26.02.2021, 15:01:16 »

это где так жестко приходится извращаться, чтобы формат системной даты менять?
Модуль календаря, найденный в инете. Авторства, увы, не знаю. Там по двойному клику выбирается дата и выполняется оператор TB = CStr(DateValue(dt_1)) И если дата не вида 26.02.2021, а Пт 26.02.2021 - имеем брык от DateValue.
Сам календарь, если надо, выложу.
Цитировать
Смотря на чем этот 64-ый работает. Если офис ниже 2010 - то надо дополнительные блоки для этого писать(именно как на примере у Вас ниже).
Вот как тогда будут выглядеть описания? String сохраняется, Long меняем на LongLong? Но вот hwnd то Long, то LongPtr. И возврат у SetLocaleInfo то Boolean, то Long.
Вообще синее нагуглено в инете, красное - взято из Win32API_PtrSafe.TXT издания 2010 года.
Цитировать
это вроде Variant в VBA - означает любой.
Variant знаю, Any - первый раз встретил.
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru