有人能指出我在正确的方向与下面的错误信息请。
前两行都以红色突出显示:
Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const VK_SNAPSHOT = 44
Public Const VK_LMENU = 164
Public Const KEYEVENTF_KEYUP = 2
Public Const KEYEVENTF_EXTENDEDKEY = 1
我们的组织使用Excel插件从电子表格中提取信息,该电子表格仅适用于32位Office。我正在关闭2台笔记本电脑,在一个我没有问题,它的工作,因为它应该,但在新的笔记本电脑不断出现预期的标识符错误。
有人能帮忙吗?
2条答案
按热度按时间qyswt5oh1#
您遇到的错误可能是由于32位库与64位版本的Office不兼容。如果您在64位Office上运行此代码,则需要将API调用声明为“PtrSafe”。
以下是如何声明64位Office的keybd_event:
对于Office 2010和更高版本,VBA7条件常数为True,因此这样您的代码将适用于32位和64位版本的Office。此外,在64位VBA中,引入了LongPtr数据类型,该数据类型可以保存32位或64位内存地址,具体取决于版本。在您的示例中,dwExtraInfo应该是一个LongPtr。
您可以通过这种方式修改所有API调用,以确保32位和64位Office版本之间的兼容性。
请注意,此修复假定您遇到的问题是由于32位与64位的差异。如果错误仍然存在,则可能是由于代码中的其他问题。
mrwjdhj32#
这是一个编译时错误,由行继续符
_
后的空行引起可以完全按照所描述的那样复制:
删除空行将解决此问题。