Подключитесь к данным после того, как вы нашли уже открытое окно IE, используя приложение оболочки - PullRequest
0 голосов
/ 24 октября 2018

Код VBA для взаимодействия с конкретным окном IE, которое уже открыто

Выше приведен поток для поиска и перехода к уже открытому экземпляру IE с использованием приложений оболочки в VBA.После того, как я нашел открытый экземпляр IE, который я ищу, мне нужно запросить таблицы с этой страницы IE, не используя ее URL.Причина, по которой я не могу использовать его URL-адрес, заключается в том, что эта страница IE является общей страницей «результатов», которая открывается в отдельном окне после выполнения поиска на главном веб-сайте, поэтому, если я использую URL-адрес страницы результатов, а именно: https://a836 -acris.nyc.gov / DS / DocumentSearch / BBLResult , он вернет ошибку.Существуют ли другие методы, которые позволяют запрашивать таблицы без использования URL-соединений, например, «getElements» для таблиц?

К.Дэвис, Тим Уильям: вы правы в своих предположениях.Первая часть моего кода / проекта открывает страницу поиска: objIE.navigate "https://a836 -acris.nyc.gov / DS / DocumentSearch / BBL " и через него я отправляю форму поиска.Вторая часть (описанная выше в первом абзаце) открывает страницу результатов (всплывающее окно).Я пытаюсь автоматизировать получение таблиц с этой страницы.Я пытался использовать метод QueryTables.Add, для моего знакомого способа подключения к данным / веб-странице требуется URL.Если я использую URL-адрес со страницы результатов, он возвращает ошибку, поэтому я ищу предложения / помощь о том, как я мог бы подключиться в противном случае.Тем не менее, я могу получить элементы страницы, используя метод 'getElements', но не могу запрашивать таблицы.Существуют и другие способы подключения к источнику данных с помощью метода QueryTables.Add, см. https://docs.microsoft.com/en-us/office/vba/api/excel.querytables.add, но я не знаком с этими другими методами.Надеюсь, это прояснит немного.

1 Ответ

0 голосов
/ 24 октября 2018

У меня не было проблем с этим, так как, хотя у вас есть промежуточное окно, окончательное окно IE превращается в главное окно IE с фокусом.Мне удалось получить таблицу результатов с помощью следующего кода, используя указанные параметры поиска:

Option Explicit
Public Sub GetInfo()
    Dim IE As New InternetExplorer
    With IE
        .Visible = True
        .navigate "https://a836-acris.nyc.gov/DS/DocumentSearch/BBL"

        While .Busy Or .readyState < 4: DoEvents: Wend

        With .document
            .querySelector("option[value='3']").Selected = True
            .querySelector("[name=edt_block]").Value = 1
            .querySelector("[name=edt_lot]").Value = "0000"
            .querySelector("[name=Submit2]").Click
        End With

        While .Busy Or .readyState < 4: DoEvents: Wend

        Dim hTable As HTMLTable

        Set hTable = .document.getElementsByTagName("table")(6)

        'do stuff with table

        .Quit
    End With
End Sub

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

Для раннего связывания с буфером обмена перейдите в VBE> Инструменты> Ссылки> Библиотека объектов Microsoft-Forms 2.0.

Если вы добавляете пользовательскую форму в свойпроект, библиотека будет автоматически добавлена.

Dim clipboard As DataObject
Set clipboard = New DataObject
clipboard.SetText hTable.outerHTML
clipboard.PutInClipboard
ThisWorkbook.Worksheets("Sheet1").Cells(1, 1).PasteSpecial

Использование с поздним связыванием

Dim clipboard As Object
Set clipboard =  GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...