VBA InternetExplorer页面加载错误

当我在F5下面运行代码时,它在这一行(设置DivClasses = HTMLDoc.getElementsByClassName(“srp_containerfl”))给我一个错误消息“Object variable or with block variable not set” ,因为页面点击后没有完全加载该button, (Do While IEObj.readyState <> 4或IEObj.Busy:DoEvents:Loop)这行代码不能正常工作,因为它将在下一行完全加载页面之前。

如果我手动运行这个代码,并给一些时间来加载页面,它运行良好。

Sub 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 

结束小组

请帮我解决这个问题。

谢谢Kashif

是的,有时候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