Excel VBA IUIAutomation: Как сохранить AsAs в IE11 (вместо «Сохранить» и «Открыть») или убедиться, что файл Excel открывается, если добавлен следующий код? - PullRequest
0 голосов
/ 14 мая 2019

Итак, я успешно перешел на веб-сайт, нажал кнопку загрузки и успешно щелкнул всплывающее диалоговое окно «Сохранить» и «Открыть» в IE11, чтобы открыть файл .CSV в Excel.

Проблема в том, что если после этого я добавлю хотя бы одну строку кода, за исключением msgbox, файл Excel просто не откроется.

Я пробовал все следующее в Excel VBA безрезультатно:

DoEvents, Application.Wait, Application.Visible = True, Application.ScreenUpdating = True, подпрограмма TimeDelay, использующая таймер, Application.EnableEvents = True

Set iuiAutoCore = New CUIAutomation

lWindowNum = ieApp.HWND
'Call MsgBox(Hex(lWindowNum))

lWindowNum = FindWindowEx(lWindowNum, 0, "Frame Notification Bar", "")
'Call MsgBox(Hex(lWindowNum))

If lWindowNum = 0 Then: Exit Sub

SetForegroundWindow (lWindowNum)

' Click Save
Set iuiAutoCondition = iuiAutoCore.CreatePropertyCondition(ByVal UIA_NamePropertyId, "Save")

Set iuiButton = iuiAutoCore.ElementFromHandle(ByVal lWindowNum).FindFirst(TreeScope_Subtree, iuiAutoCondition)

Set iuiInvokePattern = iuiButton.GetCurrentPattern(UIA_InvokePatternId)
iuiInvokePattern.Invoke

TimeDelay (1)

' Click Open
Set iuiAutoCondition = iuiAutoCore.CreatePropertyCondition(ByVal UIA_NamePropertyId, "Open")

Set iuiButton = iuiAutoCore.ElementFromHandle(ByVal lWindowNum).FindFirst(TreeScope_Subtree, iuiAutoCondition)

Set iuiInvokePattern = iuiButton.GetCurrentPattern(UIA_InvokePatternId)
iuiInvokePattern.Invoke

' Cannot add any more code after this, otherwise the downloaded Excel spreadsheet will not open

Я ожидаю, что в диалоговом окне загрузки IE11 "Сохранить" и "Открыть" будет нажата кнопка, а в Excel будет открыт файл .CSV, что и происходит.

Однако после этого я не могу добавить больше строк кода, иначе Excel не откроется.

...