下载及;通过excel中的宏从URL重命名文件

下载及;通过excel中的宏从URL重命名文件,excel,vba,Excel,Vba,我需要下载dropbox图像链接列表,并想用新名称重命名文件 我想要实现的是,如果我将新文件名放在一个单元格中,并将链接放在另一个单元格中,它应该下载文件,重命名文件,然后按照要保存的文件路径中提到的文件路径保存。如果下载图像时出现任何错误,状态单元格中的状态将更新 例如: 我将在MS Office professional plus 2016 64位Win 10上使用此宏 我正在尝试以下宏,但它没有保存图像: Option Explicit Private Declare Function

我需要下载dropbox图像链接列表,并想用新名称重命名文件

我想要实现的是,如果我将新文件名放在一个单元格中,并将链接放在另一个单元格中,它应该下载文件,重命名文件,然后按照要保存的文件路径中提到的文件路径保存。如果下载图像时出现任何错误,状态单元格中的状态将更新

例如:

我将在MS Office professional plus 2016 64位Win 10上使用此宏

我正在尝试以下宏,但它没有保存图像:

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

Dim Ret As Long

'~~> This is where the images will be saved. Change as applicable
Const FolderName As String = "C:\Temp\"

Sub Sample()
    Dim ws As Worksheet
    Dim LastRow As Long, i As Long
    Dim strPath As String

    '~~> Name of the sheet which has the list
    Set ws = Sheets("Sheet1")

    LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row

    For i = 2 To LastRow '<~~ 2 because row 1 has headers
        strPath = FolderName & ws.Range("A" & i).Value & ".jpg"

        Ret = URLDownloadToFile(0, ws.Range("B" & i).Value, strPath, 0, 0)

        If Ret = 0 Then
            ws.Range("C" & i).Value = "File successfully downloaded"
        Else
            ws.Range("C" & i).Value = "Unable to download the file"
        End If
    Next i
End Sub
选项显式
专用声明函数urldownloadtofilelib“urlmon”_
别名“URLLdownloadtofilea”(ByVal pCaller,只要_
ByVal szURL作为字符串,ByVal szFileName作为字符串_
ByVal dwReserved As Long,ByVal lpfnCB As Long)As Long
暗色尽可能长
“~~>这是保存图像的地方。更改(如适用)
Const FolderName As String=“C:\Temp\”
子样本()
将ws设置为工作表
昏暗的最后一排一样长,我一样长
将strPath设置为字符串
'~~>包含列表的工作表的名称
设置ws=图纸(“图纸1”)
LastRow=ws.Range(“A”&Rows.Count).End(xlUp).Row

对于LastRow的i=2,“可能是64位函数声明的问题。 试一试


更新:如果下载失败,函数将返回错误代码。但是,如果文件可以下载,但不能在本地写入(例如文件名无效,没有写入权限…),则函数返回0。

是,我猜问题不清楚,因此我更新了它,并重新提示我编辑问题,我将分享我试图让它工作的宏,我想这是一个很难回答的问题——但是你确定你可以访问URL吗?我的意思是,您是否检查过是否可以在Excel外部下载该文件,以确保没有其他问题?是的,我检查过Excel外部的url是否正常工作我已更改功能声明,但图像未下载。无错误代码它显示已下载的状态,但文件不在文件夹中。您是否具有该文件夹的写入权限?请尝试
environment(“Temp”)
,而不是
C:\Temp
。这将把文件写入你的个人临时文件夹(你肯定有写入权限)。我做了一个测试:当试图写入一个无效的文件夹时没有抛出错误现在我得到了一个错误。共享示例文件-对我来说,这两个文件会抛出(不同的)错误。Dropbox抛出一个超时。亚马逊,我想如果你试图下载一个产品图片的话,它不喜欢。但是,我可以下载另外两个文件和代码-所以问题可能不是代码本身。
#If Win64 Then
    Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
   (ByVal pCaller As LongPtr, _
    ByVal szURL As String, _
    ByVal szFileName As String, _
    ByVal dwReserved As Long, _
    ByVal lpfnCB As LongPtr) As LongPtr
#Else
    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
#End If