[英]Auto save PDF file from Internet Explorer window using VBA
我正在使用以下代碼從 Internet Explorer 窗口自動保存 PDF 文檔。 它工作正常,但我希望它發生在具有多個 URL 的多個 PDF 文件中。 當我通過從 A 列中獲取 URL 並使用 B 列中的文件名保存文件時,在 A 列中提供 URL 和在 B 列中提供文件格式為.pdf
目標路徑時。
Option Explicit
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" ( _
ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long _
) As Long
Sub z()
Dim strSource As String
Dim strDest As String
strSource = "http://www.cran.r-project.org/doc/manuals/R-intro.pdf"
strDest = "c:\temp\blah.pdf"
URLDownloadToFile 0, strSource, strDest, 0, 0
End Sub
正如@shA.t 所說,您需要做的就是將這些行包裝在For Each
循環中。
解決方案:假設您的 URL 位於 A1 到 A3 中,而目的地位於 B1 到 B3。 您的Sub z()
應如下所示:
For Each source in Sheets("Sheet name").Range("A1:A3")
URLDownloadToFile 0, source.Value, source.Offset(0,1).Value, 0, 0
Next source
說明: For Each
循環遍歷范圍 A1 到 A3 中的所有單元格元素。 在循環的每一輪中, source
成為那個單元格。 無需將源代碼硬編碼到您的代碼中,您只需引用source.Value
,即循環中當前單元格的內容。 對於目的地,您可以使用.Offset
方法,該方法通過相鄰單元格與調用它的單元格的相對距離來引用相鄰單元格。 在這種情況下,我們希望從 A1 到 B1(依此類推),即向下零行,向右一列( Offset(0,1)
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.