Windows 自动下载图像列表并命名它们
我有一个xls/csv图像列表: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
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下载文件,让我看看是否有其他方法可以使用。您有机会尝试我建议的代码吗??