2016-01-23 97 views
0

我想使用API​​的http://services.runescape.com/m=itemdb_rs/api/catalogue/category.json?category=Xhttp://services.runescape.com/m=itemdb_rs/api/catalogue/items.json?category=X&alpha=Y&page=Z 获得盛大交换中runescape的所有项目的数据我可以像这样在Web浏览器中获取json文本:API的网页链接包含JSON,使用vba导入到excel

Sub High_Alch() 

Dim IE As New InternetExplorer 

Dim url As String 

Dim url1 As String 

Dim url2 As String 

Dim url3 As String 

url = "services.runescape.com/m=itemdb_rs/api/catalogue/category.json?category=" 

IE.Visible = True 

For i = 0 To 37 


    IE.navigate (url + CStr(i)) 


Next i 

End Sub 

我如何得到这个字符串在vba中,我如何使用数据?我想使用类别API知道每个类别中每个字母有多少项目,然后使用它来知道项目API中有多少页面。 有人可以帮我吗?

+0

对于API本身的更多信息,http://runescape.wikia.com/wiki/Application_programming_interface –

回答

0

我不会为此使用InternetExplorer。相反,我会使用XMLHTTP

解析JSONVBA参见https://github.com/VBA-tools/VBA-JSON

Sub test() 

Dim httpObject As Object 
Set httpObject = CreateObject("MSXML2.XMLHTTP") 

sURL = "http://services.runescape.com/m=itemdb_rs/api/catalogue/category.json?category=" 

For i = 0 To 1 'only category 0 and 1 because of clicking OK in MsgBox ;-) 
    sRequest = sURL & i 
    httpObject.Open "GET", sRequest, False 
    httpObject.send 
    sGetResult = httpObject.responseText 
    Set oJSON = JsonConverter.ParseJson(sGetResult) 
    Set oAlpha = oJSON("alpha") 
    For Each oLetter In oAlpha 
    sLetter = oLetter("letter") 
    lItems = oLetter("items") 
    MsgBox "In category " & i & ": Letter " & sLetter & " has " & lItems & " items." 
    Next 

Next 

End Sub 
+0

我是否只需要复制粘贴整个事情从我的子解析? –

+0

下载ZIP文件。提取'JsonConverter.bas'。使用VBA项目打开“Excel”和VBA编辑器。右键单击Project Explorer中的VBA项目,然后单击“导入文件...”。浏览到JsonConverter.bas文件并导入它。确保你已经通过'Tools'''References'包含了对“Microsoft Scripting Runtime”的引用。 –