2016-09-29 2 views
0

Ich habe ein kleines Stück Code, der in einer Website zu suchen versucht und sagt, ob es Ergebnisse gibt oder nicht.Excel VBA Web Scraping - Objekt erforderlich Fehler

Es funktioniert sehr gut für mich (@ India), aber nicht für meinen Kollegen (@US). Er hat 2 seiner PCs eingecheckt, bekommt aber denselben Fehler.

Nachdem ich auf Suchtaste klicken, wird ie.Document total leer, auch ie.Document.ChildNodes.Length liefert 0.

Sub iTest() 
    Call ProcessRecord("First_Name", "Middle_Name", "Last_Name", "1/1/2015") 
End Sub 
Private Function ProcessRecord(fName As String, mName As String, lName As String, dob As String) As Boolean 
    Dim results As String, idx% 

    Dim ie As New InternetExplorer 
    ie.Visible = True 

    Navigate ie, "http://ws.ocsd.org/ArrestWarrants/default.aspx" 
    Do While ie.Busy Or ie.ReadyState <> READYSTATE_COMPLETE 
     Application.Wait Now + TimeSerial(0, 0, 1) 
    Loop 
    Do While ie.Busy Or ie.Document.ReadyState <> "complete" 
     Application.Wait Now + TimeSerial(0, 0, 1) 
    Loop 

    ' fill values in webpage 
    ie.Document.getElementById("FirstName").Value = fName 
    ie.Document.getElementById("MiddleName").Value = mName 
    ie.Document.getElementById("LastName").Value = lName 
    ie.Document.getElementById("DOB").Value = dob 

    ' click on search button 
    ie.Document.getElementById("btnSearch").Click 

    ' wait for results 
    Do While ie.Busy Or ie.ReadyState <> READYSTATE_COMPLETE 
     Application.Wait Now + TimeSerial(0, 0, 1) 
    Loop 
    Do While ie.Busy Or ie.Document.ReadyState <> "complete" 
     Application.Wait Now + TimeSerial(0, 0, 1) 
    Loop 

    ' check results 
    results = ie.Document.getElementById("lblResults").innerText   '<< It gives Object Required error here. Because ie.Document has no element after I click on search button. 

    If results = "No Results Found." Then 
     MsgBox "Not found", vbExclamation 
    Else 
     MsgBox "Found", vbExclamation 
    End If 

    ie.Quit 
End Function 
+0

Jeder hier helfen? – Tejas

Antwort

-1

Haben Sie die unten versucht?

Do While ie.Busy Or ie.ReadyState <> READYSTATE_COMPLETE DoEvents Loop

Erscheint für mich zu arbeiten, könnte nur eine Verzögerung bei der Internetverbindung für Ihren US Freund sein.

+0

Ich habe diese Schleife bereits in meinem Code. Sie haben DoEvent, das ich nicht habe. Macht es einen Unterschied? – Tejas