Excel VBA: не удается выполнить автоматический поиск на веб-сайте - PullRequest
0 голосов
/ 09 сентября 2018

Недавно я учусь использовать макрос Excel для поиска на веб-сайте. Я прочитал несколько веток форума и нашел код ниже. Тем не менее, ошибка появляется, когда я достигаю строки

SearchBox(0).Value = SearchString

Я попытался удалить (0), но появляется и другая ошибка. Я сейчас очень расстроен и хотел бы попросить вашего профессионального совета. Код хорошо работает на других сайтах. Как я должен изменить их, чтобы приспособиться к этому сайту? Большое вам спасибо!

P.S. Я также хотел бы знать, как нажать кнопку поиска. Спасибо!

Sub Searchstockcode()

Dim SearchString As String

SearchString = "700"

Set ie = CreateObject("InternetExplorer.Application")
With ie

ie.Visible = True
End With

ie.Navigate "http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main.aspx"

While ie.ReadyState <> 4

DoEvents

Wend


Dim SearchBox As Object

Set SearchBox = ie.Document.GetElementsByName("ct100$txt_stock_code")

SearchBox(0).Value = SearchString


Dim SearchButton As Object

Set SearchButton = ie.Document.GetElementsByName


End Sub

С уважением, ООО

1 Ответ

0 голосов
/ 09 сентября 2018

Я не знаю, связана ли проблема с выбором имени с элементом, имеющим два атрибута имени, но это кажется возможным.

Вы можете использовать следующее.

Для поля поиска я использую его идентификатор для нацеливания на элемент. Обычно это уникальный документ и самый быстрый метод выбора.

Для кнопки поиска я использую атрибут CSS + селектор значения

[src*='/image/search.gif']

Здесь указывается атрибут src [] элемента по его значению. * означает содержит. Селектор ищет атрибут src, содержащий /image/search.gif в своем значении.

Вы можете наблюдать атрибут здесь:

enter image description here

Option Explicit
Sub Searchstockcode()

    Dim SearchString As String, SearchBox As Object, SearchButton As Object, ie As Object

    SearchString = "700"

    Set ie = CreateObject("InternetExplorer.Application")

    ie.Visible = True

    ie.navigate "http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main.aspx"

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

    Set SearchBox = ie.document.getElementById("ctl00_txt_stock_code")
    SearchBox.Value = SearchString

    Set SearchButton = ie.document.querySelector("[src*='/image/search.gif']")
    SearchButton.Click

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

    Stop '<==Delete me
    'other code
    ie.Quit
End Sub
...