我从:
获得了代码https://www.developerfusion.com/thread/46191/how-to-capture-picture-using-webcam-in-vb60/
但是在使用此代码时,出现编译错误>
必须更新此项目中的代码以在64位系统上使用。请查看并更新声明声明,然后将其标记为PtrSafe属性。
我用过:
#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal ms as Long)
#End If
它不起作用。
答案 0 :(得分:1)
除非您的数据库需要在#If VBA7
或更低版本上运行,否则不需要条件编译(Office 2007
)。如果最早的版本是Office 2010
,则只需
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As Long)
因为VBA7
将LongPtr
转换为Office x86上的数据类型Long
和Office x64上的LongLong
。
识别参数ms
保留一个Long
,因为它不是指针/句柄。有关更多信息,请参见How to convert Windows API declarations in VBA for 64-bit。
如果在使用VBA7之前需要支持旧的Office版本:
#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As Long)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal ms as Long)
#End If