我使用的是VBA中的舊Excel文檔,它可以在Windows 7上與IE 11一起使用,但是在Windows 10上的IE 11上它不起作用。 IE 11啓動到請求的URL,但就是這樣。任何時候我嘗試訪問事件,方法或屬性時,它都會停止。沒有錯誤代碼,沒有崩潰,只是停止。VBA InternetExplorer.Application對象掛起
我已經證實了我對的Microsoft Internet引用控制和Microsoft HTML對象庫包括(他們不是,但他們現在)。
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"
就好。
再次,代碼工作完全正常,但在IE 11的Windows 7上沒有問題,但在IE 11的Windows 10上無法正常工作。在多臺W7和W10機器上測試,結果相同。
當您在Windows 10中手動打開IE 11時,是否有任何消息框會自動出現?例如「使這個默認瀏覽器」等 – Jordan
在循環中,你的意思是'while ie.ReadyState <> 4或ie.Busy:DoEvents:Wend'?這是正常的,試圖在這個循環之前獲得'ie.Document.Title'將不起作用,因爲文檔尚未完全加載,並且標題將失敗。它如何「停止」?你的意思是它卡在循環中?嘗試使用F8逐步完成代碼。檢查ie.ReadyState值是什麼。 –
嘗試循環'Do:Debug.Print TypeName(ie):DoEvents:Loop While ie.ReadyState <> 4或ie.Busy',並顯示輸出。 – omegastripes