Я работаю над более длинным сценарием для Access, и в какой-то момент необходимо проверить веб-сервис на наличие последней версии файла (имя файла).Этот веб-сервис доступен только через браузер, где необходимо пройти проверку подлинности.Мне уже удалось открыть окно Internet Explorer (которое видно, хотя и не должно).Однако после этого я получаю ошибку
Метод «Занят» объекта «IWebBrowser2» не удался
Прямо сейчас у меня есть следующий код:
Dim appIE As Object
Dim sURL as String, infoStr as String
Set appIE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}") 'class id of InternetExplorerMedium
sURL = "https://webservice.example.com:1234/Server/test.jsp?parameter=value"
With appIE
.Navigate sURL, Headers:=CreateBasicAuthHeader("MyUsername", "MyPassword")
.Visible = False
End With
Do While appIE.Busy Or appIE.ReadyState <> 4
DoEvents
Loop
infoStr = appIE.Document.getElementsByTagName("body").item.innerText
, которая работает хорошо до строки:
Do While appIE.Busy Or appIE.ReadyState <> 4
Если я выйду из цикла, появится такая же ошибка, но для «Документа» вместо «Занят» в строке infoStr = appIE.Document.getElementsByTagName("body").item.innerText
.Учитывая, что .Visible = False
также не оказывает влияния (я вижу окно браузера), я думаю, что любая операция на appIE
после .Navigate
не работает.Но я понятия не имею, почему.
После некоторого поиска после указанной ошибки я нашел 3 возможных решения, но ни одно из них не удалось.
- Использование свойств
.Busy
или .ReadyState
для предотвращения продолжения макроса, пока браузер не полностью загрузил сайт.Что я, очевидно, уже делаю. - Использование Internet Explorer на среднем уровне целостности.Что я тоже уже делаю.
- Поиск в диспетчере задач любых "потерянных" процессов IE.Их нет.
Любая помощь или идея очень ценится.