使用VBA从Internet Explorer窗口自动保存PDF文件

时间:2015-06-30 11:03:49

标签: excel vba excel-vba

我正在使用以下代码自动从Internet Explorer窗口保存PDF文档。它运行正常,但我希望它可以用于多个具有多个URL的PDF文件。 当我通过从A列获取URL并使用文件名保存来自B列的文件时,在列A中的URL和目标路径(文件格式为.pdf)中提供URL。

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

1 个答案:

答案 0 :(得分:0)

正如@ shA.t所说,你需要做的就是将这些行包装在For Each循环中。

<强>解决方案: 比方说,您的网址在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))。