天天看點

Vba如何讀取多個本地HTML,VBA循環通過多個URL和運作HTML請求

我将有多個儀器編号和URL來運作此代碼。儀器編号将從行8的列B開始并向下。此VBA目前僅運作儀器編号19930074944。我怎樣才能讓它周遊所有這些儀器号碼并跳過空白單元格?VBA循環通過多個URL和運作HTML請求

searchResultsURL = baseURL & "GetRecDataDetail.aspx?rec=19930074944&suf=&bdt=1/1/1947&edt=11/18/2016&nm=&doc1=&doc2=&doc3=&doc4=&doc5="

是以,我需要讓IT部門編輯:

searchResultsURL = baseURL & "GetRecDataDetail.aspx?rec= & InstNum & "&suf=&bdt=1/1/1947&edt=11/18/2016&nm=&doc1=&doc2=&doc3=&doc4=&doc5="

然後InstNum必須引用B8和向下。并在每個不同的網址上運作所有這些代碼。我不知道該怎麼做。非常感謝!

Option Explicit

Public Sub Download_PDF()

Dim baseURL As String, searchResultsURL As String, pdfURL As String, PDFdownloadURL As String

Dim httpReq As Object

Dim HTMLdoc As Object

Dim PDFlink As Object

Dim cookie As String

Dim downloadFolder As String, localFile As String

Const WinHttpRequestOption_EnableRedirects = 6

'Folder in which the downloaded file will be saved

downloadFolder = ThisWorkbook.Path

If Right(downloadFolder, 1) <> "\" Then downloadFolder = downloadFolder & "\"

baseURL = "http://recorder.maricopa.gov/recdocdata/"

searchResultsURL = baseURL & "GetRecDataDetail.aspx? rec=19930074944&suf=&bdt=1/1/1947&edt=11/18/2016&nm=&doc1=&doc2=&doc3=&doc4=&doc5="

Set httpReq = CreateObject("WinHttp.WinHttpRequest.5.1")

With httpReq

'Send GET to request search results page

.Open "GET", searchResultsURL, False

.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0"

.Send

cookie = .getResponseHeader("Set-Cookie")

'Put response in HTMLDocument for parsing

Set HTMLdoc = CreateObject("HTMLfile")

HTMLdoc.body.innerHTML = .responseText

'Get PDF URL from pages link

'< a id="ctl00_ContentPlaceHolder1_lnkPages" title="Click to view unofficial document"

' href="unofficialpdfdocs.aspx?rec=19930074944&pg=1&cls=RecorderDocuments&suf=" target="_blank" rel="external nofollow" target="_blank">11< /a>

Set PDFlink = HTMLdoc.getElementById("ctl00_ContentPlaceHolder1_lnkPages")

pdfURL = Replace(PDFlink.href, "about:", baseURL)

'Send GET request to the PDF URL with automatic http redirects disabled. This returns a http 302 status (Found) with the Location header containing the URL of the PDF file

.Open "GET", pdfURL, False

.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0"

.setRequestHeader "Referer", searchResultsURL

.setRequestHeader "Set-Cookie", cookie

.Option(WinHttpRequestOption_EnableRedirects) = False

.Send

PDFdownloadURL = .getResponseHeader("Location")

'Send GET to request the PDF file download

.Open "GET", PDFdownloadURL, False

.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/46.0"

.setRequestHeader "Referer", pdfURL

.Send

End With

End Sub