#excel #xml #vba #element #worksheet
#excel #xml #vba #элемент #рабочий лист
Вопрос:
Как мне получить дату рождения в разделе «разведение» на веб-странице? Появляется сообщение «объект не поддерживает это свойство или метод».
обновление: еще раз спасибо Zwenn за исправление моих ошибок.
Sub GetADog2()
URL2 = "https://fasttrack.grv.org.au/Dog/Details/-370317"
Set request = CreateObject("MSXML2.XMLHTTP")
Dim http As New XMLHTTP60, html As New HTMLDocument
Dim node1 As HTMLHtmlElement
Dim Element1 As Object
Set ws = ThisWorkbook.Worksheets("Sheet1")
With http
.Open "GET", URL2, False
.send
html.body.innerHTML = .responseText
End With
'Problem starts here
Set Element1 = html.getElementById("breedingArea").getElementsByClassName("display-value")(0)
ws.Cells(5, 1) = Trim(Replace(Element1.innerText, "/", "~"))
End Sub
Ответ №1:
Используйте всегда Option Explicit
в качестве первой строки в каждом модуле и сортируйте свой код. getElementsByClassName()
невозможно использовать таким образом, если вы используете раннюю и позднюю привязку. Это не работает с поздней привязкой. Я не знаю, почему это работает в двух строках со смесью.
Sub GetADog2()
Dim http As New XMLHTTP60
Dim html As New HTMLDocument
Dim Element1 As HTMLHtmlElement
Dim node1 As HTMLHtmlElement
Dim ws As Worksheet
Dim url2 As String
url2 = "https://fasttrack.grv.org.au/Dog/Details/-370317"
Set http = CreateObject("MSXML2.XMLHTTP")
Set ws = ThisWorkbook.Worksheets("Sheet1")
With http
.Open "GET", url2, False
.send
html.body.innerHTML = .responseText
End With
'Problem starts here
Set Element1 = html.getElementById("breedingArea")
Set node1 = Element1.getElementsByClassName("display-value")(0)
ws.Cells(5, 1) = Trim(Replace(node1.innerText, "/", "~"))
End Sub