[英]VBA to download an image from an Internet source
我想从网络下载图像并尝试使用 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)。 但是,我不知道原因,因为代码没有错误。
互联网地址是正确的。 我可以查看图片并向公众开放。 但是,我不确定是否允许下载。
我不知道是否需要对 Urlmon.dll 的特定引用。 我试图加载它,但 VBA (Excel 2010) 拒绝了,“无法添加对指定库的引用”。
VBA7 = True 在我的机器上。 我将 3 Long 声明更改为 LongPtr 但我不知道这是必需的(对于所有三个)。 在我用 Long 声明尝试相同的代码之前,没有更好的结果。
最后,同样重要的是,我不确定 URLDownloadToFileA 是否是用于此特定 URL 结构的 API。 也许有一个更简单的解决方案。
欢迎任何指导,解决方案会很棒。 谢谢你。
如果在浏览器中输入不带协议的image-url,浏览器会选择默认协议(一般是http)。 但这似乎不是URLDownloadToFile
函数的情况。
添加一个领先的http:
到 url 对我有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.