将Excel VBA 32位代码转换为64位
问题描述:
我的一位朋友前段时间为我制作了这个Excel VBA代码。它是32位,但现在我需要它转换为64位。将Excel VBA 32位代码转换为64位
任何人都可以请帮我这么做吗?
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (_
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32.dll" _
Alias "GetWindowLongA" (_
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" (_
ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long
Private Declare Function CallNextHookEx Lib "user32" (_
ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" (_
ByVal hHook As Long) As Long
Private Declare Function PostMessage Lib "user32.dll" _
Alias "PostMessageA" (_
ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Declare Function WindowFromPoint Lib "user32" (_
ByVal xPoint As Long, _
ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32.dll" (_
ByRef lpPoint As POINTAPI) As Long
答
你需要使用 “PTRSAFE” 声明时功能:
Private Declare PtrSafe Function
此外,在64位Excel中,使用龙龙而不是长
答
和LongPtr的回调函数
但ptrSafe编译器本身会警告你,如果这是缺少
这应该指出你安全地在正确的方向灰色:https://msdn.microsoft.com/en-us/library/office/ee691831(v=office.14).aspx – Ambie
[Excel VBA代码:x64版本中的编译错误(需要'PtrSafe'属性的可能的重复项)](http://*.com/questions/16763147/excel-vba-code-compile-error-in-x64-version-ptrsafe-attribute-required) –
请编辑问题并描述您具体的问题。那些代码在64位上不起作用? – kebs