Я использую старый документ Excel с VBA, который отлично работает с IE 11 в Windows 7, однако в IE 11 в Windows 10 он не работает. IE 11 запускает URL-адрес, но это все. Каждый раз, когда я пытаюсь получить доступ к событию, методу или свойству, он останавливается. Нет кода ошибки, без сбоев, просто останавливается.VBA InternetExplorer.Application Object Hang
Я подтвердил, что мои ссылки на Microsoft Internet Controls и Microsoft HTML Object Library включены (они не были, но они сейчас).
Dim ie As Object
If ie Is Nothing Then
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
End If
url = "www.myurl.com"
ie.Navigate url
While ie.ReadyState <> 4 Or ie.Busy: DoEvents: Wend
код ниже проверки никогда не выполняет, я поставил код MsgBox до и после тестирования. Только MsgBox перед циклом работает, если я не пытаюсь использовать MsgBox ie.Document.Title
, но я могу сделать MsgBox ie.ReadyState
или MsgBox "Loading webpage"
просто отлично.
Снова код отлично работает без проблем в Windows 7 с IE 11, но не работает в Windows 10 с IE 11. Протестировано на нескольких машинах W7 и W10 с одинаковыми результатами.
Когда вы открываете IE 11 вручную в Windows 10, у вас есть окна сообщений, которые автоматически появляются? например «Сделайте это своим браузером по умолчанию» и т. Д. – Jordan
В цикле вы имеете в виду 'While ie.ReadyState <> 4 или ie.Busy: DoEvents: Wend'? Это нормально, что попытка получить 'ie.Document.Title' до того, как этот цикл не будет работать, поскольку документ еще не полностью загружен, и получение его названия не удастся. Как это «останавливается»? Вы имеете в виду, что он застрял в петле? Попробуйте выполнить код с помощью F8. Проверьте значение ie.ReadyState. –
Попробуйте цикл 'Do: Debug.Print TypeName (то есть): DoEvents: Loop While ie.ReadyState <> 4 Или ie.Busy' и покажите результат. – omegastripes