我见过How can I send an HTTP POST request to a server from Excel using VBA?
和the MacOS-friendly response,描述了如何使用QueryTables从HTTP端点检索数据。它演示了如何检索单个字符串并将其填充到单元格中。
一切都好。现在我想检索多个值。它是一个很大的JSON字符串,我想在填充一个或多个单元格之前在Excel VBA中对其进行后处理。
这怎么可能?
我可以想到一种方法 - 将QueryTables事物的结果放入隐藏的单元格中,然后对隐藏的单元格进行后处理以填充其他单元格。我还没有评估过几个VBA的JSON库。
但这看起来很糟糕。真的,我不想依赖于将JSON存储为单元格中的值。我想将它只存储在我的VBA代码中的变量中。就像我在使用CreateObject(“MSXML2.ServerXMLHTTP”)一样。 (注意:MacOS上的Excel中无法使用CreateObject()。
我理解这里最好的答案可能是:如果您想在Excel中运行应用程序,请获取Windows计算机。
答案 0 :(得分:8)
您可以在VBA中实际使用Worksheets(0).QueryTable
方法。只需查看手册或谷歌即可。因此,您不必将json字符串存储到单元格中。
或者我使用了像
这样的东西Public Function GetWebSource(ByRef URL As String) As String
Dim xml As IXMLHTTPRequest
On Error Resume Next
Set xml = CreateObject("Microsoft.XMLHTTP")
With xml
.Open "GET", URL, False
.send
GetWebSource = .responseText
End With
Set xml = Nothing
End Function
下载json字符串。
四处寻找解析器。像Parsing JSON in Excel VBA这样的人应该满足你的需求。