8

我已经看到如何使用 VBA 从 Excel 向服务器发送 HTTP POST 请求?

以及 描述如何使用 QueryTables 从 HTTP 端点检索数据的 MacOS 友好响应。它演示了如何检索单个字符串并将其填充到单元格中。

都好。现在我想检索多个值。这是一个很大的 JSON 字符串,我想在填充一个或多个单元格之前在 Excel VBA 中对其进行后处理。

这怎么可能?

我可以想到一种方法 - 将 QueryTables 事物的结果放入隐藏单元格,然后对隐藏单元格进行后处理以填充其他单元格。我还没有评估一些用于 VBA 的 JSON 库。

但这似乎很hacky。真的,我不想依赖将 JSON 作为值存储在单元格中。我只想将它存储到我的 VBA 代码中的变量中。就像我在使用 CreateObject("MSXML2.ServerXMLHTTP") 一样。(注意:CreateObject() 在 MacOS 上的 Excel 中不可用)。

而且我知道最好的答案可能是: 如果您想在 Excel 中运行应用程序,请购买一台 Windows 机器。

4

1 回答 1

10

您可以Worksheets(0).QueryTable在 VBA 中实际使用该方法。只需查看手册或谷歌即可。因此,您不必将 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这样的东西应该可以满足您的需求。

于 2013-03-01T18:20:08.953 回答