Sleep Lib "kernel32" дает 64-битную системную ошибку
Я пытаюсь закрыть доступ (Application.Quit
) после запуска всех функций.
VBA закрыть доступ после завершения всех функций был ссылкой для меня.
но, когда я Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
, Это дает мне
код в этом проекте должен быть обновлен для использования в 64-разрядных системах. ошибка
есть ли замена этого кода для запуска всех функций перед полным закрытием доступа?
любая помощь будет высоко оцененный. Спасибо.
2 ответов
на dwMilliseconds
параметр-это DWORD, поэтому технически он будет 32bit на 32-битной машине и 64bit на 64-битной машине. Из-за этого требуется PtrSafe
нотации (хотя технически dwMilliseconds
будет маршировать правильно, потому что это ByVal
... и кто хочет ждать так долго в любом случае) измените декларацию на это:
#If VBA7 Then
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
измените объявление api следующим образом:
#If VBA7 And Win64 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
для 64бит Апис прочтите это: http://www.jkp-ads.com/articles/apideclarations.asp