Как получить титульный лист страницы сайта в vba? - PullRequest
0 голосов
/ 25 июня 2019

Вот фрагмент кода, над которым я работал:

Dim my_title2  as Variant
     Set objShell = CreateObject("Shell.Application")
        IE_count = objShell.Windows.Count
        MsgBox ("The number of pages is: " & IE_count)

        For x = 0 To (IE_count - 1)
        On Error Resume Next
        my_url = objShell.Windows(x).document.Location
         my_title = objShell.Windows(x).document.Title


            If my_title Like "F-Engine" & "*" Then
            Set ie = objShell.Windows(x)
             my_title2 = ie.document.Title
             'my_title2 = objShell.Windows(x).document.Title

            MsgBox ("The wanted title for the page should corrrespond. " & my_title2)
                   Exit For
        Else
        End If
    Next

У меня проблемы с печатью заголовка окна после настройки Set ie = objShell.Windows(x) когда y_title2 принимает значение ie.document.title, MsgBox отображает только:

"Требуемый заголовок страницы должен соответствовать."

И ничего не печатает после этого предложения. Таким образом, название, присвоенное «то есть», не отображается.

С другой стороны, если my_title2 принимает значение my_title2 = objShell.Windows(x).document.title, фактически отображается MsgBox:

"Требуемый заголовок страницы должен соответствовать."

Далее следует название окна. Таким образом, последняя отображаемая строка будет выглядеть так:

"Требуемый заголовок страницы должен соответствовать. F-Engine"

Я не совсем понимаю, почему я не могу напечатать заголовок страницы с первым объявлением my_title2.

Я делаю всю эту работу, чтобы проверить, правильно ли выбрана страница после того, как найден заголовок "F-Engine". И для этого я пытаюсь напечатать значение заголовка окна ie. Но кажется, что ничего не было установлено и передано.

Может кто-нибудь помочь мне выяснить, где моя ошибка и как ее исправить?

Спасибо :)

1 Ответ

1 голос
/ 25 июня 2019

Не каждый объект в objShell.Windows представляет страницу / вкладку IE - они могут быть экземплярами Windows Explorer.В этих случаях отсутствует свойство документа для доступа.

Вы можете проверить это вместо использования On Error Resume Next:

Dim w As Object, myUrl, myTitle, ie

For Each w In CreateObject("Shell.Application").Windows
    If w.Name = "Internet Explorer" Then
        myUrl = w.document.Location
        myTitle = w.document.Title

        Debug.Print myUrl, myTitle

        If myTitle Like "F-Engine*" Then
            Set ie = w
            Debug.Print "Found: " & myTitle
            Exit For
        End If
    End If
Next w
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...