从URL下载图像并重命名 [英] Downloading Images from URL and Renaming
问题描述
我有一个包含两列的Excel工作表,A和B.A列具有名称,B列具有图像URL.
I have an excel sheet with 2 columns, A and B. Column A has a name, and column B has the image URL.
我想下载所有图像并将其重命名为A列中的内容.我在这里进行搜索,似乎有以前的解决方案,但是该代码不适用于我的excel/版本PC,但出现错误:
I want to download all the images and have them renamed to what's in column A. I've searched on here and it appears that there has been a previous solution, but the code doesn't work on my version of excel/PC as I get an error:
编译错误
必须更新项目中的代码以在64位系统上使用.请检查并更新Declare语句,然后将其标记为PtrSafe属性.
The code in the project must be updated for use on 64 bit systems. Please review and update Declare statements then mark them with the PtrSafe Attribute".
这是上一篇文章:希望并感谢您对此提供的任何帮助!
Would appreciate and love any help regarding this!
推荐答案
The following Sub
should do the same as the one in GET pictures from a url and then rename the picture. But since it does not uses system functions but only native Excel VBA, it should be independent of whether 32-bit or 64-bit Office is used.
Sheet1
:
代码:
Const FolderName As String = "P:\Test\"
Sub downloadJPGImages()
Set ws = ActiveWorkbook.Sheets("Sheet1")
lLastRow = ws.Range("A" & Rows.Count).End(xlUp).Row
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
Set oBinaryStream = CreateObject("ADODB.Stream")
adTypeBinary = 1
oBinaryStream.Type = adTypeBinary
For i = 2 To lLastRow
sPath = FolderName & ws.Range("A" & i).Value & ".jpg"
sURI = ws.Range("B" & i).Value
On Error GoTo HTTPError
oXMLHTTP.Open "GET", sURI, False
oXMLHTTP.Send
aBytes = oXMLHTTP.responsebody
On Error GoTo 0
oBinaryStream.Open
oBinaryStream.Write aBytes
adSaveCreateOverWrite = 2
oBinaryStream.SaveToFile sPath, adSaveCreateOverWrite
oBinaryStream.Close
ws.Range("C" & i).Value = "File successfully downloaded as JPG"
NextRow:
Next
Exit Sub
HTTPError:
ws.Range("C" & i).Value = "Unable to download the file"
Resume NextRow
End Sub
这篇关于从URL下载图像并重命名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!