Я пишу код в VBA, чтобы ввести несколько сайтов, поместив дату в поле поиска, а затем получите список номеров os, найденных для этой даты.VBA Получение информации с сайта
Код работает, когда я отлаживаю нажатие клавиши F8, но когда я запускаю макрос, который иногда работает, иногда это не так. Когда я получаю сообщение об ошибке, я просто нажимаю debug, а затем F5, чтобы продолжить макрос, и он работает так, как должен. Проблема всегда occours в одной линии с:
Call IE.document.GetElementsByID("........")
сообщение об ошибке: Запуск ошибки времени «424», требуется объект.
Я думаю, что проблема заключается в том, что страница не загружается, но я не уверен.
Sub PegarDadosListas(data As Date)
Dim contador As Integer
Dim dia As String
Dim mes As String
Dim ano As String
dia = Day(data)
mes = Month(data)
ano = Year(data)
Range("K2").End(xlToRight).Offset(0, 1) = data
Call Extra(dia, mes, ano)
Call Pontofrio(dia, mes, ano)
End Sub
Sub Extra(dia As String, mes As String, ano As String)
Dim URL As String
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
URL = "http://www.extra.com.br/listadecasamento/home.aspx"
IE.Navigate URL
Do While IE.Busy
DoEvents
Loop
Call IE.document.getelementbyid("ctl00_Conteudo_PaginaSistemaArea1_ctl04_txtDia").setattribute("value", dia)
Call IE.document.getelementbyid("ctl00_Conteudo_PaginaSistemaArea1_ctl04_txtMes").setattribute("value", mes)
Call IE.document.getelementbyid("ctl00_Conteudo_PaginaSistemaArea1_ctl04_txtAno").setattribute("value", ano)
IE.document.getelementbyid("ctl00_Conteudo_PaginaSistemaArea1_ctl04_btnEncontrarLista").Click
Do While IE.Busy
DoEvents
Loop
Sheets("Plan2").Range("A4") = IE.document.getelementsbyclassname("pagination")(0).innertext
Sheets("Plan2").Range("A2").FormulaR1C1 = "=MID(R4C1,R3C1,40)"
Sheets("Plan2").Range("A3").FormulaR1C1 = "=FIND(""pesquisa"",R4C1)"
IE.Quit
Call CopiaeCola(3)
End Sub
Sub Pontofrio(dia As String, mes As String, ano As String)
Dim URL As String
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
URL = "http://www.pontofrio.com.br/Site/ListaGerenciadaCasamentoWelCome.aspx"
IE.Navigate URL
Do While IE.Busy
DoEvents
Loop
With IE
Call .document.getelementbyid("ctl00_Conteudo_ctl01_CtrlBuscarLista_txtDia").setattribute("value", dia)
Call .document.getelementbyid("ctl00_Conteudo_ctl01_CtrlBuscarLista_txtMes").setattribute("value", mes)
Call .document.getelementbyid("ctl00_Conteudo_ctl01_CtrlBuscarLista_txtAno").setattribute("value", ano)
.document.getelementbyid("ctl00_Conteudo_ctl01_CtrlBuscarLista_btnEncontrarLista").Click
Do While IE.Busy
DoEvents
Loop
Sheets("Plan2").Range("A4") = IE.document.getelementsbyclassname("pagination")(0).innertext
Sheets("Plan2").Range("A2").FormulaR1C1 = "=MID(R4C1,R3C1,40)"
Sheets("Plan2").Range("A3").FormulaR1C1 = "=FIND(""pesquisa"",R4C1)"
End With
IE.Quit
Call CopiaeCola(4)
End Sub
Привет Энди, спасибо за ваш ответ. я использовал другой код, прежде чем я был с помощью: 'У DoEvents Loop До IE.READYSTATE = 4' разве они не samething? Я Chenge мину что-то вроде: 'Do While IE.ReadyState <> READYSTATE_COMPLETE DoEvents loop' Я не знаком с методом сна, но я буду смотреть на него! Спасибо – FRebelo
READYSTATE имеет значение 4, так что это то же самое. (Использование 4 может потребоваться в зависимости от того, из какого приложения вы используете код.) Я обновил свой ответ, включив метод «Сон». –
Спасибо! Я включу сон в свой код и изменю его на readystate! – FRebelo