繁体   English   中英

VBA 从 Internet 源下载图像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM