Надеюсь, это действительно простой вопрос. Я использую IE11
с активированными ссылками HMTL Object Library
и Internet Controls
. Я не очень хорошо разбираюсь в VBA, поэтому в моем коде может быть много шума.
На кнопке нет идентификатора элемента, но я могу использовать ie.Document.getElementsByClassName
, добавив некоторые объявления html и xml благодаря этому сообщению . Я беру имя и город, штат из Excel и подключаю его к веб-сайту, затем нажимаю кнопку поиска, но здесь происходит моя ошибка. Классическая ошибка времени выполнения '438': Object doesn't support this property or method.
Есть идеи, как исправить и двигаться дальше?
HTML:
VBA:
Option Explicit
Sub HGScrape()
'Application.ScreenUpdating = False
'we define the essential variables
Dim ie As Object
Dim my_url As String
Dim SearchButton, NameBox, AddressBox
Dim ele As Object
Dim x As Integer
Dim y As Integer
Dim IsOdd As Integer
Dim html_doc As Object 'HTMLDocument
Dim xml_obj As Object 'MSXML2.DOMDocument
my_url = "https://www.healthgrades.com/"
'add the "Microsoft Internet Controls" reference in your VBA Project indirectly
Set ie = New InternetExplorer
ie.Visible = True 'False ''''''''''''''''''''''
ie.Navigate my_url '"13.33.74.92" '("https://www.healthgrades.com/")
While ie.ReadyState <> 4
DoEvents
Wend
Set NameBox = ie.Document.getElementById("search-term-selector-child")
NameBox.Value = ActiveSheet.Range("A2")
Set AddressBox = ie.Document.getElementById("search-location-selector-child")
AddressBox.Value = ActiveSheet.Range("B2")
Set html_doc = CreateObject("htmlfile")
Set xml_obj = CreateObject("MSXML2.XMLHTTP")
xml_obj.Open "GET", my_url, False
xml_obj.send
html_doc.body.innerHTML = xml_obj.responseText
Set SearchButton = ie.Document.getElementsByClassName("autosuggest_submiter") 'id of the button control (HTML Control)
SearchButton.Click
While ie.ReadyState <> 4
DoEvents
Wend