运行时错误-214767259(80004005)自动化错误未指定的错误-Excel VBA-UIAutomation

时间:2019-06-08 07:44:46

标签: c++ c excel-vba ui-automation accessibility-api

我对EXcel VBA有所了解,并且是UI自动化的新手。我正在尝试使用Excel VBA在客户端环境内进行UI自动化。我有参考UIAutomationCore.dll。当我尝试单击应用程序上的按钮时,出现“运行时错误-2147467256(80004005)自动化错误未指定的错误”。

下面是我的代码。在最后一行,当我尝试调用该功能时,出现错误。

我正在使用Window 7 32位计算机和32位版本的Excel2010。

Dim oUIA As UIAutomationClient.CUIAutomation
Dim deskEle As UIAutomationClient.IUIAutomationElement

Dim ele As UIAutomationClient.IUIAutomationElement
Dim invokePattern As UIAutomationClient.IUIAutomationInvokePattern
Dim legacyPattern As UIAutomationClient.IUIAutomationLegacyIAccessiblePattern

Dim cnd As UIAutomationClient.IUIAutomationCondition
Dim walker As UIAutomationClient.IUIAutomationTreeWalker

Set oUIA = New UIAutomationClient.CUIAutomation
Set walker = oUIA.RawViewWalker
Set deskEle = oUIA.GetRootElement


Set ele = walker.GetFirstChildElement(deskEle)

Do While Not ele Is Nothing
    If InStr(ele.CurrentName, "Title of the window") Then
        Set myWindow = ele
        Exit Do
    End If
    Set ele = walker.GetNextSiblingElement(ele)
Loop


Set cnd = oUIA.CreatePropertyCondition(UIA_NamePropertyId, "Go")
Set ele = myWindow.FindFirst(TreeScope_Subtree, cnd)

Set legacyPattern = ele.GetCurrentPattern(UIA_LegacyIAccessiblePatternId)
legacyPattern.DoDefaultAction

我也尝试过使用UIA_InvokePatternId。我仍然遇到相同的错误。

Set invokePattern = ele.GetCurrentPattern(UIA_InvokePatternId)
invokePattern.Invoke

实际上是在单击该按钮。但是由于最后一行的错误,执行没有向前推进。我也尝试过如下。

On Error Resume Next
invokePattern.Invoke
On Error GoTo 0

然后,invokePattern.Invoke之后的下一行将被执行,但问题是,单击该按钮后,另一个小窗口打开。我无法使用UIAutomation读取第二个窗口上的元素。但是,当我手动单击按钮时,我可以读取和访问第二个窗口中的元素。我希望能够单击按钮以编程方式访问第二个窗口的元素。我在任何地方都找不到解决方案。有人可以帮我吗?预先谢谢你。

0 个答案:

没有答案