Table 来自 HTTP 响应文本 VBA Excel

Table from HTTP responseText VBA Excel

我正在使用 VBA 并尝试使用 HTTP 请求从响应测试中创建一个 table。这是我的代码:

Set hReq = CreateObject("MSXML2.XMLHTTP")
    With hReq
        .Open "GET", "https://example.url.com/data", False
        .send
    End With

如果导航到 URL,页面上的唯一项目是 CSV 响应,如下所示:

name,ID,job,sector johndoe,1234,creator,sector1 janedoe,5678,worker,sector2

这转换为 table,其中包含 4 列,分别命名为 "name"、"ID"、"job" 和 "sector"。我是 VBA 的新手,我正在努力理解如何将响应文本翻译成 table。但我需要将其转换为表格形式,以便我可以使用列变量。我可以将响应文本放入单个单元格中:

Sheets("Sheet1").Range("A1").Value = hReq.responseText

但是,我无法将 table 转换为表格格式,因此我可以像 table 一样开始使用它。最好将数据放入内存中的数组中,以便我可以使用 VBA 对其进行操作和分析,但出于故障排除目的,将其放入 Excel 工作表中也很有帮助,这样我就可以仔细检查我的程序了。

这会遍历您的 header 请求并发布到您首选的 sheet:

Sub test()
    Dim RespArray() As String
    Dim RespArray2() As String
    Dim i, i2 As Long

    Set hReq = CreateObject("MSXML2.XMLHTTP")
    With hReq
        .Open "GET", "https://example.url.com/data", False
        .send
    End With

    ' split the data into larger pieces
    RespArray() = Split(hReq.responseText, " ")

    ' loop through first array to break it down line by line
    For i = LBound(RespArray) To UBound(RespArray)
        ' split each line into individual pieces
        RespArray2() = Split(RespArray(i), ",")
        ' loop through second array and add to Sheet1
        For i2 = LBound(RespArray2) To UBound(RespArray2)
          Worksheets("Sheet1").Cells(i + 1, i2 + 1).Value = RespArray2(i2)
        Next i2
    Next i
End Sub

Results in