2017-09-02 116 views
0

我正在做簡單的vba腳本巫婆是要打開IE瀏覽器,獲取一些信息並退出。腳本打開IE瀏覽器35次沒有問題,但之後,它工作,但不再打開IE瀏覽器。vba Internet Explorer刪除對象

Sub Test() 
for x=1 to 50 
    Dim objIE As Object 
    Set objIE = New InternetExplorer 
    Set objIE = New InternetExplorerMedium 
    objIE.Visible = True 
    objIE.Navigate2 "http://www.google.com" 
    objIE.Visible = False 
    Set objIE = Nothing 
next x 
End Sub 
+0

閱讀https://en.wikipedia.org/wiki/Graphics_Device_Interface如果你對GDI有什麼感興趣但是我相信GDI對象有限制,你可以打開多少個將取決於IE版本和如果是64位或32位版本。你正在運行最新的IE版本64位?這是從我記憶中的一個問題,我幾年前,但它可能仍然有關... – perfo

回答

1

我真的不明白你想與你的代碼做什麼,但這裏一些提示,可能有助於解決問題:

  1. 你可以同時聲明和一套您的瀏覽器圈外的,你不需要聲明它每一次設置:

    Dim objIE As Object 
    Set objIE = New InternetExplorerMedium 
    
  2. 你爲什麼要設置objIENew InternetExplorer,如果你設置後是正確的它又如同New InternetExplorerMedium?這一行動毫無用處。

  3. objIE.Navigate2 "http://www.google.com"之間的Set objIE = Nothing你應該等待一段時間,至少有Do While objIE.busy Loop,因爲你甚至不給瀏覽器加載文檔的時候,你已經摧毀它。

  4. Set objIE = Nothing也可以放在循環中,您可以重新使用相同的瀏覽器來瀏覽儘可能多的鏈接。另外,不要忘了與objIE.quit

從內存摧毀它之前先退出它,如果它的工作原理35倍,繼續「工作,但什麼都不做」,從第36屆開始,有關鏈接難怪被損壞時你到達那裏。 您可以在每次您要瀏覽的鏈接上檢查Debug.Print

0

這是使用VBA自動執行IE的基本結構。

Option Explicit 

Sub PAO() 

    Dim IE As InternetExplorer 
    Dim url As String 
    Const url$ = "http://www.google.com" 

    Set IE = CreateObject("internetexplorer.application") 

    IE.Visible = True 
    IE.navigate url 

    Set IE = Nothing 

End Sub 

而且,這裏是一個Wait功能,可以幫助您等待網頁加載。

Function IEWait(t As Long) 

    Do While IE.Busy 
     Application.Wait DateAdd("s", t, Now) 
    Loop 

End Function 

這是你如何使用功能:

IEWait (1) 
Do Until IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop 

希望這將幫助你,但讓我知道如果你有任何問題。

相關問題