2016-09-26 91 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