2017-11-10 4 views
0

私は簡単な問題があると思います。私はhttpリンクに直接行くことによってpngを見たいと思います。VBA。すぐにダウンロードに行く

問題は、私はダウンロードに直進し続けます。

私はこれを賭けているのは、スイッチをどこかで反転させることにすぎないということです。

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

疑問符の後にURLパラメータを確認してください。そのうちの1つがウェブサイトに表示するのではなく、ファイルをダウンロードさせる可能性があります。 "dl"パラメータがあれば、私は確信しています。たぶん "force download = true" = true?すべてのパラメータを削除してから、何が起こるかを見ることができます。 –

答えて

0

私は、これはブラウザの種類(すなわち、IE対クロム)、および使用されている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 
関連する問題