GetElementsbyClassname: открытый IE против методов MSXML2
Следующий макрос работает просто отлично. Он открывает экземпляр IE и использует метод «getelementsbyclassname», чтобы вернуть ожидаемое значение для «my_rate». Однако, когда я запускаю второй макрос, который использует метод «MSXML2», макрос завершается ошибкой в отмеченной строке и возникает ошибка «Ошибка времени выполнения 438: объект не поддерживает это свойство или метод». Почему метод Open IE работает, но метод MSXML2 не работает с моим кодом? Я использую IE 11. У меня также есть набор ссылок на библиотеку объектов Microsoft HTML для второго макроса, но, похоже, это не имеет значения. Заранее спасибо за объяснение мне.
Sub BankRate_Rate_Retrieval()
my_url = "http://www.bankrate.com/funnel/mortgages/mortgage-results.aspx?market=321&loan=150000&perc=20&prods=2&points=0"
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.Navigate my_url
.Top = 50
.Left = 530
.Height = 400
.Width = 400
End With
Do Until Not ie.Busy And ie.readyState = 4
DoEvents
Loop
my_rate = ie.Document.getelementsbyclassname("br-col-2 br-apr")(1).getElementsByTagName("div")(0).innertext
End Sub
Sub BankRate_Rate_Retrieval()
my_url = "http://www.bankrate.com/funnel/mortgages/mortgage-results.aspx?market=321&loan=150000&perc=20&prods=2&points=0"
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 xml_obj = Nothing
my_rate = html_doc.body.getelementsbyclassname("br-col-2 br-apr")(1).getElementsByTagName("div")(0).innertext
«Ошибка времени выполнения 438: объект не поддерживает это свойство или метод возникает в строке выше
End Sub
Редактировать: Скриншот библиотеки для Д. Земенса