Получить IE оконный объект по заголовку окна с VBA

Я нашел это решение, предоставленное @mkingston:Как перехватить и управлять всплывающим окном Internet Explorer с помощью VBA

...но это'не работает для меня Я'Мы добавили обе рассматриваемые справочные библиотеки, но при запуске сценария я столкнулся с этими проблемами:

Ошибка компиляции: неопределенный Sub из-за pauseUntilIEReady (так как этот Sub не былт включил с ответом, я убрал его из сценария)

Ошибка компиляции: аргумент не является обязательным из-за oGetIEWindowFromTitle (поэтому я попытался закомментировать это, чтобы получить скрипт для компиляции)

После того, как скрипт, наконец, скомпилирован, он получает эту ошибку:

Ошибка автоматизации Система не может найти указанный файл.

в этой строке кода: для каждого oGetIEWindowFromTitle в objShellWindows

Вот'это код, который яЯ пытаюсь бежать:

Function oGetIEWindowFromTitle(sTitle As String, _
                           Optional bCaseSensitive As Boolean = False, _
                           Optional bExact As Boolean = False) As SHDocVw.InternetExplorer

Dim objShellWindows As New SHDocVw.ShellWindows
Dim found As Boolean
Dim startTime As Single

found = False
'Loop through shell windows
For Each oGetIEWindowFromTitle In objShellWindows
    found = oGetIEWindowFromTitleHandler(oGetIEWindowFromTitle, sTitle, bCaseSensitive, bExact)
    If found Then Exit For
Next

'Check whether a window was found
If Not found Then
    Set oGetIEWindowFromTitle = Nothing
Else
    'COMMENTED OUT TO GET SCRIPT TO COMPILE pauseUntilIEReady oGetIEWindowFromTitle
End If

End Function


Private Function oGetIEWindowFromTitleHandler(win As SHDocVw.InternetExplorer, _
                                  sTitle As String, _
                                  bCaseSensitive As Boolean, _
                                  bExact As Boolean) As Boolean

oGetIEWindowFromTitleHandler = False

On Error GoTo handler
'If the document is of type HTMLDocument, it is an IE window
If TypeName(win.Document) = "HTMLDocument" Then
    'Check whether the title contains the passed title
    If bExact Then
        If (win.Document.title = sTitle) Or ((Not bCaseSensitive) And (LCase(sTitle) = LCase(win.Document.title))) Then oGetIEWindowFromTitleHandler = True
    Else
        If InStr(1, win.Document.title, sTitle) Or ((Not bCaseSensitive) And (InStr(1, LCase(win.Document.title), LCase(sTitle), vbTextCompare)  0)) Then oGetIEWindowFromTitleHandler = True
    End If
End If
handler:
'We assume here that if an error is raised it's because
'the window is not of the correct type. Therefore we
'simply ignore it and carry on.

End Function

а также

Sub test()

Dim ie As SHDocVw.InternetExplorer
Dim doc As HTMLDocument 'If you have a reference to the HTML Object Library
'Dim doc as Object 'If you do not have a reference to the HTML Object Library

' Change the title here as required
Set ie = oGetIEWindowFromTitle("My popup window")
Set doc = ie.Document

Debug.Print doc.getElementsByTagName("body").Item(0).innerText

End Sub

Ответы на вопрос(1)

Ваш ответ на вопрос