Я пытаюсь создать код, который перейдет на сайт, поместит его в данные, отправьте его и вернет ответ в ячейку в excel. Когда я перехожу к нему, он работает нормально, но когда я просто пытаюсь запустить его, я получаю ошибку времени выполнения 424; Требуется объект.Обязательная ошибка объекта VBA, пытающаяся получить InnerText
Я пробовал искать хороший ответ, но я просто не понимаю, как это исправить. Где мой вопрос? Как это исправить?
Sub Distance()
Dim IE As Object
' Create InternetExplorer Object
Set IE = CreateObject("InternetExplorer.Application")
' Make visible
IE.Visible = True
' Go to site
IE.Navigate "http://www.distance-cities.com/"
' Wait while IE loading...
Do Until IE.READYSTATE = 4
DoEvents
Loop
IE.Document.getelementbyId("from").Value = "Stillwater, OK"
IE.Document.getelementbyId("to").Value = "Hollis, OK"
IE.Document.forms(0).submit
Do Until IE.READYSTATE = 4
DoEvents
Loop
'*Below is where I get my error
Sheet1.Range("E5").Value = IE.Document.getelementbyId("routemi").InnerText
IE.Quit
End Sub
Приносим извинения, если это немного грязно.
Спасибо вам за помощь!
Если он работает при отладке, но не при запуске прямо через, вероятно, это проблема синхронизации, и ваша страница не загружена полностью, или элемент, который вы пытаетесь получить, не добавлен в содержимое страницы. Попробуйте добавить короткое «ожидание», прежде чем пытаться получить доступ к этому элементу. –
Привет, я добавил Application.Wait (Now + TimeValue («0:00:10»)), и это сделал трюк, есть ли лучший способ сделать это? – TheLeastofThese
Вы можете обернуть 'getelementbyid()' в цикле, пока возвращаемое значение не будет 'Nothing' (но вы также должны добавить ограничение времени на то, как долго вы готовы ждать, чтобы вы могли выйти из цикла, если элемент никогда не появляется ...) –