2016-09-26 88 views
1

當運行下面的代碼與F5它給我一個錯誤消息「對象變量或與塊變量未設置」在這條線 (設置DivClasses = HTMLDoc.getElementsByClassName(「srp_containerfl」 )),因爲頁面點擊按鈕後沒有完全加載,(Do While IEObj.readyState <> 4或IEObj.Busy:DoEvents:Loop)這行代碼無法正常工作,因爲它將要在完成加載頁面之前的下一行。VBA InternetExplorer的頁面加載錯誤

如果我手動運行此代碼並給出一些時間來加載頁面,它運行良好。

子Fetch_NaukriDotCom_Data()

Dim IEObj     As InternetExplorer 
Dim HTMLDoc     As MSHTML.HTMLDocument 
Dim divcl     As MSHTML.IHTMLElement 
Dim DivClass    As MSHTML.IHTMLElement 
Dim DivClasses    As MSHTML.IHTMLElementCollection 
Dim DataContainer   As MSHTML.IHTMLElement 
Dim DataContainerChild  As MSHTML.IHTMLElement 
Dim DataContainerChilds  As MSHTML.IHTMLElementCollection 
Dim DataOneContainer  As MSHTML.IHTMLElement 
Dim DataOneContainers  As MSHTML.IHTMLElementCollection 
Dim StrClassName   As String 
Dim Int_i     As Integer 

Set IEObj = New InternetExplorer 
IEObj.Visible = True 
IEObj.navigate "https://www.naukri.com/" 

With IEObj 
    Do While .readyState <> 4 Or .Busy: DoEvents: Loop 

    .document.getElementsByName("qp").Item.innerText = "VBA Developer" 
    .document.getElementsByName("ql").Item.innerText = "Noida" 
    .document.getElementById("qsbFormBtn").Click 
End With 

Do While IEObj.readyState <> 4 Or IEObj.Busy: DoEvents: Loop 'This loop is not working properly, as it is going 
                  'to next line, without completely loading the page 

Set HTMLDoc = New MSHTML.HTMLDocument 
Set HTMLDoc = IEObj.document 
Set DivClasses = HTMLDoc.getElementsByClassName("srp_container fl ") 'Here Error occuring 

Set DataContainerChilds = DivClasses.Item.Children 

末次

請幫我解決這個問題。

感謝 卡希夫

+0

也許只是'IEObj.navigate「https://www.naukri.com/vba-developer-jobs-in-noida」' – Slai

回答

0

呀IE的表現很奇怪,有時,所以我用這個

更換

Do While IEObj.readyState <> 4 Or IEObj.Busy: DoEvents: Loop 

Do While IEObj.readyState <> 4 Or IEObj.Busy: Wait 5 : Loop 

,然後在年底粘貼此過程代碼。 Wait 5表示再次檢查狀態之前等待5秒鐘。

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

感謝答覆,但仍不能正常工作,當我運行這個代碼與F5它給我一個錯誤(Set DataContainerChilds = DivClasses.Item.Children),當我手動把光標放在行(設置DivClasses = HTMLDoc.getElementsByClassName(「srp_container fl」)),並手動運行F8,它不給我一個錯誤,並運行良好, 爲什麼? 請幫幫我。 Kashif。 – Kashif