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



我正在使用以下代码从Internet Explorer窗口自动保存PDF文档。它工作得很好,但我希望它适用于具有多个URL的多个PDF文件。当我在A列中给出URL,在B列中给出文件格式为.pdf的目标路径时,从A列中获取URL,并用B列中的文件名保存文件。

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:tempblah.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))。

最新更新