我进行了大量搜索,但未找到我想要的内容。到目前为止,我对VBA的了解只限于操纵数字,所以这对我来说是个新领域。
我正在尝试从以下网址LINK中提取单行数据。完成后,我可以解析这些数据,但我们将跨越那座桥......
以下是Excel VBA中的代码:
Enum READYSTATE
READYSTATE_UNINITIALIZED = 0
READYSTATE_LOADING = 1
READYSTATE_LOADED = 2
READYSTATE_INTERACTIVE = 3
READYSTATE_COMPLETE = 4
End Enum
Sub ImportStackOverflowData()
Dim ie As InternetExplorer
Dim html As HTMLDocument
Set ie = New InternetExplorer
ie.Visible = False
ie.navigate "http://api.rsbuddy.com/grandExchange?a=guidePrice&i=1637"
Do While ie.READYSTATE <> READYSTATE_COMPLETE
DoEvents
Loop
'show text of HTML document returned
Set html = ie.document.body
MsgBox html.DocumentElement.innerHTML
'close down IE and reset status bar
Set ie = Nothing
Application.StatusBar = ""
End Sub
导航到网址后,IE下载窗口打开,并要求我打开或保存.json文件...点击任何内容会导致代码崩溃,忽略它会将代码保留在它下面的READYSTATE循环中。
如何阻止它打开此窗口,而是将信息插入工作簿?
谢谢。
答案 0 :(得分:1)
绕过那个盒子并不简单,如果你搜索,有很多很多关于它的帖子。它变得特别复杂,因为某些版本的IE以不同的方式运行(使用下载功能区而不是对话框)。
要按照您的方式执行此操作,您需要使用Windows API来获取下载窗口的句柄并将其关闭。这很快变得非常复杂。
然而,有一种更简单的方式;不要将Internet Explorer用于简单请求。使用更轻松的东西,我在这里使用MSXML
,但您可以将其与WINHTTP
交换。
Sub ImportStackOverflowData()
Dim request As Object
Set request = CreateObject("MSXML2.XMLHTTP")
With request
.Open "GET", "http://api.rsbuddy.com/grandExchange?a=guidePrice&i=1637", False
.send
MsgBox .responseText
End With
End Sub