我想从网上下载图像,并尝试使用URLDownloadToFile API,如下所示。
#If VBA7 Then
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" ( _
ByVal pCaller As LongPtr, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As LongPtr, _
ByVal lpfnCB As LongPtr) _
As Long
#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
Private Sub TestDownload()
Dim Source As String, Target As String
Dim Ret As Long
Source = "//cdnparap40.paragonrels.com/ParagonImages/Property/P4/JONESBORO/10077581/0/120/90/" & _
"f645b5257c6ae2f13147ec57c315f9f4/1/acd2b86d15f1087ed3462f2ba4ebb733/10077581.JPG"
Target = "H:\Temp\FileName.jpg"
Ret = URLDownloadToFile(0, Source, Ffn, 0, 0)
End Sub
目标目录存在,但是代码未提供结果(Ret = 0)。但是,我不知道原因,因为代码没有错误。
Internet地址正确。我可以查看图片并向公众开放。但是,我不确定是否允许下载。
我不知道是否需要对Urlmon.dll的特定引用。我尝试加载它,但VBA(Excel 2010)拒绝,“无法添加对指定库的引用。”
VBA7 =在我的机器上为True。我将3个Long声明更改为LongPtr,但我不知道这是必需的(对于所有三个)。在我使用Long声明尝试相同的代码之前,没有更好的结果。
最后,同样重要的是,我不确定URLDownloadToFileA是用于此特定URL结构的API。也许有一个更简单的解决方案。
任何指导都是值得欢迎的,解决方案将是很棒的。谢谢。
答案 0 :(得分:1)
如果在浏览器中输入不带协议的图像URL,浏览器将选择默认协议(通常为http)。但是URLDownloadToFile
函数似乎并非如此。
在网址中添加前导http:
对我来说很成功