VBA.navigate直接去下载
问题描述:
我有一个简单的问题,我想。我想通过直接访问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
答
我认为这与浏览器类型(即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
祝你好运,杰森!
答
尝试导航到空白页.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
请在问号后查看网址参数。其中一个可能导致文件下载而不是在网站上显示。如果有“dl”参数,我会确定的。也许“force = 1”为“强制下载”= true?你可以从删除所有参数开始,看看会发生什么。 –