私は以下のコードを使用してサイトから情報を削り取ろうとしていますが、私が指摘した部分では苦労しています。同じコードを何度も何度も繰り返すのではなく、私が望む結果を簡単に得る方法はありますか?どのように多くの結果が得られるかわからないので、その情報を使用することはできません。Webページ間をジャンプするためのFor ... Nextループがありますか?
Dim objIE As InternetExplorer
Dim y As Integer
Dim result As String
Set objIE = New InternetExplorer
objIE.Visible = True
objIE.navigate "https://www.searchiqs.com/nyalb/Login.aspx"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
objIE.document.getElementById("btnGuestLogin").Click
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
objIE.document.getElementById("ContentPlaceHolder1_txtFromDate").Value = "07/01/2017"
objIE.document.getElementById("ContentPlaceHolder1_txtThruDate").Value = "07/19/2017"
objIE.document.getElementById("ContentPlaceHolder1_cboDocGroup").Value = "DBA"
objIE.document.getElementById("ContentPlaceHolder1_cmdSearch").Click
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
y = 1
' brings up a table of results. I need to click on the view button and get the info from that page
objIE.document.getElementById("ContentPlaceHolder1_grdResults_btnView_0").Click
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
' element ID's are hidden for those looking to help
result = Trim(objIE.document.getElementById("ContentPlaceHolder1_lblDetails2").innerText)
Sheets("Sheet1").Range("C" & y).Value = result
y = y + 1
' I would love to direct link to the next serch result here but the link does not change between pages so I click the next button
objIE.document.getElementById("ContentPlaceHolder1_btnNext").Click
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
result = Trim(objIE.document.getElementById("ContentPlaceHolder1_lblDetails2").innerText)
Sheets("Sheet1").Range("C" & y).Value = result
y = y + 1
' and I click the next button again
objIE.document.getElementById("ContentPlaceHolder1_btnNext").Click
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
result = Trim(objIE.document.getElementById("ContentPlaceHolder1_lblDetails2").innerText)
Sheets("Sheet1").Range("C" & y).Value = result
y = y + 1
'AND AGAIN
objIE.document.getElementById("ContentPlaceHolder1_btnNext").Click
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
result = Trim(objIE.document.getElementById("ContentPlaceHolder1_lblDetails2").innerText)
Sheets("Sheet1").Range("C" & y).Value = result
y = y + 1
' You get the idea
objIE.document.getElementById("ContentPlaceHolder1_btnNext").Click
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
result = Trim(objIE.document.getElementById("ContentPlaceHolder1_lblDetails2").innerText)
Sheets("Sheet1").Range("C" & y).Value = result
' I basically repeat that process til I cant press CTRL V anymore. Is there a loop I can use to tighten this up?
私に知らせてください。あなたたちは過去に大きな助けをしてきました。私のreadystateループが私に問題を与えているので、XMLメソッドを使うことも有益でしょうか?前もって感謝します。
ウェブページ自体に「次へ」ボタンが表示されなくなるまで、基本的に「次へ」をクリックしていますか?それはあなたがいつ止めるべきかを知る方法です。 – BruceWayne
forループを使用し、ボタンが存在するかどうかを判断するためにgetElementByIdが 'Nothing'を返すかどうかをチェックします。 –
はい次のボタンを除く正しいBruceWayneは、単に非表示になります。それは最後に「何もない」価値を返さないでしょう。 – Chris