Следующий макрос работает просто отлично. Он открывает экземпляр IE и использует метод «getelementsbyclassname», чтобы вернуть ожидаемое значение для «my_rate». Однако, когда я запускаю второй макрос, использующий метод «MSXML2», макрос завершается сбоем в отмеченной строке и возникает ошибка «Ошибка времени выполнения 438: объект не поддерживает это свойство или метод». Почему метод «Открыть 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: объект не поддерживает это свойство или метод встречается в строке выше
Конец сабвуфера
Редактировать: Скриншот библиотеки для Д. Земенса
Dim doc As HTMLDocument
, а затем в кодеSet doc = New HTMLDocument: doc.body.innerHTML = xml_obj.responseText
. ТогдаSet el = doc.getelementsbyclassname("br-col-2 br-apr")
должно работать нормально? - person   schedule 05.05.2014