Как управлять новой всплывающей вкладкой из VBA - PullRequest
0 голосов
/ 25 сентября 2019

Я написал код, который автоматически загружает некоторую документацию, если некоторые критерии удовлетворены, и у меня только одна проблема. После нажатия на ссылку открывается новая вкладка IE (дочерняя вкладка), и я хотел бы закрыть ее после некоторогодействия.Новая вкладка всегда имеет один и тот же заголовок (например, «online.xxx»), поэтому, возможно, есть способ управления ею.

Моя родительская вкладка настроена так:

Dim IE as New ShDocVw.InternetExplorerMedium

Спасибо.

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

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

Sub TestClose()
    Dim IE As Object, Data As Object
    Dim ticket As String
    Dim my_url As String, my_title As String

    Set IE = CreateObject("InternetExplorer.Application")

    With IE
        .Visible = True
        .Navigate "https://amazon.com" '1st tab
        .Navigate "https://flipkart.com", CLng(2048) '2nd
        .Navigate "https://snapdeal.com", CLng(2048) '3rd

        While IE.ReadyState <> 4
            DoEvents
        Wend

        'wait some time to let page load
        Application.Wait (Now + TimeValue("0:00:05"))

        Set objShell = CreateObject("Shell.Application")
        IE_count = objShell.Windows.Count

        'loop through the window and find the tab
        For x = 0 To (IE_count - 1)
            On Error Resume Next
            'get the location and title
            my_url = objShell.Windows(x).Document.Location
            my_title = objShell.Windows(x).Document.Title

            'debug to check the value
            Debug.Print x
            Debug.Print my_title

            'find the special tab based on the title.
            If my_title Like "Amazon" & "*" Then
                Set IE = objShell.Windows(x)
                IE.Quit 'call the Quit method to close the tab.
                Exit For   'exit the for loop 
            Else
            End If
        Next

    End With
    Set IE = Nothing
End Sub
0 голосов
/ 26 сентября 2019

Чтобы закрыть существующую вкладку:

Sub TestClose()

    Dim ie As Object

    Set ie = GetIEByTitle("K1000 Service Center")
    If Not ie Is Nothing Then
        ie.Quit
    End If

End Sub

Функция поиска открытой вкладки IE на основе заголовка документа:

Function GetIEByTitle(sTitle As String) As Object
    Dim o As Object, rv As Object
    For Each o In CreateObject("Shell.Application").Windows
        If TypeName(o) = "IWebBrowser2" Then
            If o.document.Title Like "*" & sTitle & "*" Then
                Set rv = o
                Exit For
            End If
        End If
    Next o
    Set GetIEByTitle = rv
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...