将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 
+1

这应该指出你安全地在正确的方向灰色:https://msdn.microsoft.com/en-us/library/office/ee691831(v=office.14).aspx – Ambie

+1

[Excel VBA代码:x64版本中的编译错误(需要'PtrSafe'属性的可能的重复项)](http://*.com/questions/16763147/excel-vba-code-compile-error-in-x64-version-ptrsafe-attribute-required) –

+0

请编辑问题并描述您具体的问题。那些代码在64位上不起作用? – kebs

你需要使用 “PTRSAFE” 声明时功能:

Private Declare PtrSafe Function 

此外,在64位Excel中,使用龙龙而不是长

和LongPtr的回调函数

但ptrSafe编译器本身会警告你,如果这是缺少