VBA。直接下载

时间:2017-11-10 21:49:38

标签: vba

我认为我有一个简单的问题。我想通过直接访问http链接来查看png。

问题是,我一直在直接下载。

我打赌这只是在某个地方翻转开关的问题。

Sub CamelGraph() 'ASIN As String

    Dim ASIN As String
    ASIN = "0395967392"


    Set ie = CreateObject("InternetExplorer.Application")
    Dim URL As String
    URL = "https://charts.camelcamelcamel.com/us/" & ASIN & "/sales-rank.png?force=1&zero=0&w=725&h=440&legend=1&ilt=1&tp=1y&fo=0&lang=en"


    ie.Visible = True
    apiShowWindow ie.hwnd, sw_maximize
    ie.navigate URL

End Sub

2 个答案:

答案 0 :(得分:0)

我认为这更多地与浏览器类型(即IE与Chrome)以及正在使用的MIME类型有关。虽然您可以在单个计算机上或使用变通方法(如Chrome重定向器)修复此问题,但是可以考虑下载该文件,然后使用Shell命令打开它?我知道这不是完美的,但我认为它会在不同的机器上提供更一致的结果。

下面是一些用于下载文件的VBA代码,然后您可以使用Shell来使用默认的关联应用程序打开它:

Sub DownloadFile()

Dim myURL As String
myURL = "https://YourWebSite.com/?your_query_parameters"

Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False, "username", "password"
WinHttpReq.send

myURL = WinHttpReq.responseBody
If WinHttpReq.Status = 200 Then
    Set oStream = CreateObject("ADODB.Stream")
    oStream.Open
    oStream.Type = 1
    oStream.Write WinHttpReq.responseBody
    oStream.SaveToFile "C:\file.csv", 2 ' 1 = no overwrite, 2 = overwrite
    oStream.Close
End If

End Sub
祝你好运,杰森!

答案 1 :(得分:0)

首先尝试导航到空白页.Navigate "about:blank"以在浏览器窗口中显示图像。

Option Explicit

Sub Test()

    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .Navigate "about:blank"
        Do While .readyState <> 4 Or .Busy
            DoEvents
        Loop
        .Navigate "https://charts.camelcamelcamel.com/us/0395967392/sales-rank.png?force=1&zero=0&w=725&h=440&legend=1&ilt=1&tp=1y&fo=0&lang=en"
        Do While .readyState <> 4 Or .Busy
            DoEvents
        Loop
        Do While .Document.readyState <> "complete"
            DoEvents
        Loop
    End With

End Sub