我正在尝试在运行所有函数后关闭访问(Application.Quit
)。
VBA close access after all functions finished一直是我的参考。
但是当我Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
时,它给了我以下错误:
必须更新此项目中的代码才能在64位系统上使用。
在完全关闭访问权限之前,是否有替换此代码来运行所有功能?
dwMilliseconds
参数是一个DWORD,因此技术上在32位机器上是32位,在64位机器上是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位API,请阅读:http://www.jkp-ads.com/articles/apideclarations.asp