Ошибка времени выполнения -214767259 (80004005) Ошибка автоматизации Неуказанная ошибка - Excel VBA - UIAutomation - PullRequest
0 голосов
/ 08 июня 2019

У меня есть знания по EXcel VBA, и я новичок в UI Automation.Я пытаюсь сделать UI Automation внутри клиентской среды, используя Excel VBA.У меня есть ссылка UIAutomationCore.dll.Когда я пытаюсь нажать кнопку в приложении, я получаю сообщение «Ошибка времени выполнения -2147467256 (80004005) Ошибка автоматизации не указана».

Ниже мой код.в последней строке, когда я пытаюсь вызвать функциональность, я получаю сообщение об ошибке.

Я использую 32-разрядный компьютер с ОС Windows 7 и 32-разрядную версию Excel 2010.

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.Но когда я нажимаю кнопку вручную, я могу прочитать и получить доступ к элементам во втором окне.Я хочу, чтобы можно было нажимать на кнопку доступа к элементам второго окна программно.Я не мог найти решение нигде. Может кто-нибудь, пожалуйста, помогите мне с этим.Заранее спасибо.

...