Apr*_*ril 4 excel vba excel-vba
我试图运行宏代码,但由于我使用的是64位Excel 2016,因此这段代码无效.请帮我解决这个问题.
Private Declare Function FindWindowEx Lib "User32" Alias "FindWindowExA" _
(ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long
Private Declare Function IIDFromString Lib "ole32" _
(ByVal lpsz As Long, ByRef lpiid As GUID) As Long
Private Declare Function AccessibleObjectFromWindow Lib "oleacc" _
(ByVal hWnd As Long, ByVal dwId As Long, ByRef riid As GUID, _
ByRef ppvObject As Object) As Long
Run Code Online (Sandbox Code Playgroud)
这些应该适用于64位Excel
Private Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, _
ByVal lpsz2 As String) As LongPtr
Private Declare PtrSafe Function IIDFromString Lib "ole32" _
(ByVal lpsz As LongPtr, ByRef lpiid As GUID) As LongPtr
Private Declare PtrSafe Function AccessibleObjectFromWindow Lib "oleacc" _
(ByVal Hwnd As LongPtr, ByVal dwId As LongPtr, ByRef riid As GUID, _
ByRef ppvObject As Object) As LongPtr
Run Code Online (Sandbox Code Playgroud)
如果您需要在两者上运行它,您可以使用以下内容 #If VBA7
#If VBA7 Then
'64 bit declares here
#Else
'32 bit declares here
#End If
Run Code Online (Sandbox Code Playgroud)
可以在此处找到PtrSafe Win32 API声明的一个很好的资源:Win32API_PtrSafe.txt
我不太确定IIDFromString,AccessibleObjectFromWindow但我认为它们应该subs代替functions.并且lpsz应该String如下.也许有人可以证实这一点?
Private Declare PtrSafe Sub IIDFromString Lib "ole32" ( _
ByVal lpsz As String, ByRef lpiid As GUID)
Private Declare PtrSafe Sub AccessibleObjectFromWindow Lib "oleacc" _
(ByVal Hwnd As LongPtr, ByVal dwId As LongPtr, ByRef riid As GUID, _
ByRef ppvObject As Object)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18058 次 |
| 最近记录: |