从URL中检索数据

我已经广泛search,没有find我在找什么。 我对VBA的知识迄今为止仅限于操纵数字,所以这对我来说是一个新的领域。

我正试图从下面的链接LINK中拉出单行数据。 一旦完成,我可以parsing这些数据,但是我们会跨越那个桥…

以下是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 

导航到URL后,IE下载窗口打开,并要求我打开或保存一个.json文件…单击任何东西崩溃的代码,并忽略它留下READYSTATE循环下面的代码。

我怎样才能阻止它打开这个窗口,而是将信息插入工作簿?

谢谢。

绕过那个盒子不是微不足道的,如果你search的话,有很多关于它的post。 它变得特别复杂,因为某些版本的IE以不同的方式(使用下载function区而不是对话框)进行操作。

要做到这一点,你需要使用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