У меня есть старый файл Excel с 32-битным кодом. Кто сможет превратить это в 64-битный код?
Private Declare Function SetWindowPos Lib "user32" ( _
ByVal hWnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) _
As Long
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Спасибо за вашу помощь
Возможно это проливает больше света на проблему. В этом случае вам нужно заменить Longptr
на hwnd
и hWndInsertAfter
. И вам нужно добавить ключевое слово Ptrsafe
.
Очень полезной со многими примерами является статья JKP Объявление функций API для 64-битного Office и Mac Office
Дальнейшее чтение совместимость 32-битного Excel и 64-битного Excel Office 365 показано, как использовать константы условной компиляции, включая полезные комментарии @GSerg
Исходная ссылка Microsoft удалена, но я создал gist для хранения полезных объявлений API.
@CristianBuse Впечатляющая работа и документация!
@Т.М. Я просто сохранил файл в том же состоянии, в котором скачал его с Microsoft много лет назад. Авторские права Microsoft указаны вверху файла, поэтому я не догадался упомянуть — я не писал ни строчки кода :) Но документация действительно впечатляет.
В данном случае это
Declare PtrSafe Function SetWindowPos Lib "user32" _
(ByVal hwnd As LongPtr, _
ByVal hWndInsertAfter As LongPtr, _
ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
Declare PtrSafe Function GetSystemMetrics Lib "user32" _
(ByVal nIndex As Long) As Long
Далее читайте 1 , 2 , 3
Who can turn this into 64-Bit code?
- можно.