2013-10-16 36 views
1

我創建了一個從網站提取數據並保存在電子表格中的程序。但是我遇到的主要問題是Internet Explorer的懸掛。刷新網頁,而網頁在VBA中沒有正確加載excel

With ie 
     .Visible = True 
     .Navigate urll 
     Do While .readyState <> 4 
      Application.StatusBar = "Opening Page : " & i & ", Please wait..." 
      DoEvents 
     Loop 
     Set html = .Document 
End With 

循環做雖然有時棍棒和永遠不會結束與Internet Explorer無法正確加載,從來沒有涉及到的readyState的4。在這種情況下,我必須手動刷新頁面(即保持知名度真),或者我必須停止程序,並對程序進行一些更新(數據源和目標的位置)。如果每10個網頁都保持打開狀態,那麼這非常耗時。

我有一個解決方案,即在時間循環進行時,程序應該檢查循環執行期間所經過的時間,如果循環持續超過50秒,程序應暫停當前循環並重新開始刷新頁面。 (請讓我知道你是否有更好的邏輯)。

我無法爲這項工作做正確的編碼。任何人都可以解決這個...

回答

1

試試這個(UNTESTED

這樣做是遞增的循環被稱爲時間數的變量和檢查。

Dim nCount As Long 

Sub Sample() 
    ' 
    '~~> Rest of the code 
    ' 
    With ie 
     .Visible = True 
     .Navigate urll 
     Do While .readyState <> 4 
      Application.StatusBar = "Opening Page : " & i & ", Please wait..." 

      Wait 2 '<~~ Wait for 2 Seconds 

      If nCount > 25 Then 
       '~~> Approx 50 seconds have elapsed 
      End If 
     Loop 
     Set HTML = .Document 
    End With 
    ' 
    '~~> Rest of the code 
    ' 
End Sub 

Private Sub Wait(ByVal nSec As Long) 
    nSec = nSec + Timer 
    While nSec > Timer 
     DoEvents 
    Wend 
    nCount = nCount + 1 
End Sub 
+0

感謝亞洲時報Siddharth,這個工程... –

+0

只是一個修正,NCOUNT應該每次循環檢查的值是大於25,所以,如果條件滿足,該網頁不設置爲0每2秒刷新一次... –