Windows 自动下载图像列表并命名它们

Windows 自动下载图像列表并命名它们,windows,excel,vba,download,Windows,Excel,Vba,Download,我有一个xls/csv图像列表: Name image url test.jpg http://test.com/232dd.jpg test2.jpg http://test.com/2390j.jpg 我有大约200个……有没有办法下载列表并将它们命名为xls文件中标识的名称 这是我的Excel VBA: Private Declare Function URLDownloadToFile Lib "urlmon" _ Alias "URLDownloadT

我有一个xls/csv图像列表:

Name        image url
test.jpg    http://test.com/232dd.jpg
test2.jpg   http://test.com/2390j.jpg
我有大约200个……有没有办法下载列表并将它们命名为xls文件中标识的名称

这是我的Excel VBA:

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

Private Sub download_pics()
  Dim rng As Range
  Dim cell As Variant

  Set rng = Range("A1:B10")
  For Each cell In rng
    ' Download the file.
    URLDownloadToFile 0, cell(rng, 2).Value, "C:\" & cell(rng, 1).Value, 0, 0
  Next
End Sub

URLDownloadToFile遇到类型不匹配错误

确定类型不匹配与您的迭代有关。您需要为rng语句中的每个单元格指定如何在
rng
上迭代,如:

用于rng.行中的每个单元格

否则,对于rng.Cells中的每个单元格,它将该语句视为
,这将引发不匹配错误

我对代码做了一些修改(基于Sid的回答),因此它会检查以确保文件下载成功,但大多数情况下,您发现的是正确的,您只需要以稍微不同的方式实现它

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

Private Sub download_pics()
  Dim rng As Range
  Dim myRow As Range
  Dim imgName As String
  Dim fileLocation As String
  Dim Ret As Long 'return value from the URLDownloadToFile function
  Set rng = Range("A1:B10")
  For Each myRow In rng.Rows
    With myRow
        imgName = .Columns(2).Value
        fileLocation = "C:\" & .Columns(1).Value
        With .Columns(1).Offset(, 2)
            If URLDownloadToFile(0, imgName, fileLocation, 0, 0) = 0 Then
                .Value = "downloaded successfully"
            Else:
                .Value = "download failed!"
            End If
        End With
    End With
  Next
End Sub

. 如果您在实现代码时遇到特定问题,请提供您尝试过的代码、失败的原因以及期望的结果。我刚刚尝试了以下方法:私有声明函数URLDownloadToFile Lib“urlmon”\别名“URLDownloadToFileA”(ByVal pCaller为Long,val szURL为String,ByVal szFileName为String,val dwReserved为Long,ByVal lpfnCB为Long)作为Long私有子下载_pics()Dim rng As Range Dim cell As Variant Set rng=Range(“A1:B10”)为rng'中的每个单元格下载文件.URLDownloadToFile,cell(rng,2).Value,“C:\”&cell(rng,1)。Value,0,0下一个端点sub我来看看。我认为您不需要使用WinAPI下载文件,让我看看是否有其他方法可以使用。您有机会尝试我建议的代码吗??