2016-09-26 19 views
1

私はそれがメッセージこの行にを「変数またはWithブロック変数が設定されていないオブジェクト」私にエラーを与えている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 

End Subの

この問題を解決するために私を助けてください。

おかげ カシーフ

+0

多分ちょうど 'IEObj.navigate「https://www.naukri.com/vba-developer-jobs-in-noida」' – Slai

答えて

0

うんIEは時々ので、私はこの

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

Do While IEObj.readyState <> 4 Or IEObj.Busy: DoEvents: 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という行にエラーが表示され、手動でカーソルを(Set DivClasses = HTMLDoc.getElementsByClassName( "srp_container fl"))、手動でF8、それは私にエラーを与えていないし、正常に実行されています なぜですか? 私を助けてください。 Kashif。 – Kashif

関連する問題