簡體   English   中英

使用 VBA 從 Internet Explorer 窗口自動保存 PDF 文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM