求将Excel 32位VBA代码转换为64位代码
32位转64位VBA适配代码
要让这些API声明兼容64位Excel,需做两处核心修改:
- 给
Declare关键字添加PtrSafe后缀,标识该API支持64位环境 - 将窗口句柄类型的参数(
hWnd、hWndInsertAfter)从Long替换为LongPtr——64位系统中窗口句柄是8字节数据,LongPtr会根据系统位数自动适配长度
转换后的代码如下:
Private 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 Private Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
补充说明:GetSystemMetrics的参数和返回值均为标准整数,在64位VBA中仍可使用Long类型,无需额外调整。
内容的提问来源于stack exchange,提问作者Jens W.
相关产品推荐
相关产品推荐

