2017-11-10 65 views
0

我有一個簡單的問題,我想。我想通過直接訪問http鏈接來查看png。VBA.navigate直接去下載

問題是,我一直在直接下載。

我敢打賭,這只是一個翻轉開關的地方。

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 
+1

請在問號後查看網址參數。其中一個可能導致文件下載而不是在網站上顯示。如果有「dl」參數,我會確定的。也許「force = 1」爲「強制下載」= true?你可以從刪除所有參數開始,看看會發生什麼。 –

回答

0

我認爲這與瀏覽器類型(即IE和Chrome)以及正在使用的MIME類型有關。雖然您可以在單個計算機上或解決方法(如Chrome重定向器)中解決此問題,但也可以考慮下載該文件,然後使用Shell命令打開它?我知道這並不完美,但我認爲它會在不同的機器上提供更一致的結果。

下面是一些VBA代碼來下載一個文件,然後你可以殼牌它與默認的應用程序打開它:

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 

祝你好運,傑森!

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