将JSON / XML数据映射到VBA中的Excel单元格?

时间:2018-02-14 14:44:21

标签: json xml vba excel-vba excel

我在网上进行一些研究之后就问过这个问题。有一种方法可以将JSON类型或XML类型文件导入Excel工作表,但是没有找到针对我的案例的明确描述。我想我的目标是什么;

我有一些像.txt文件这样的字符串数据;

示例数据:

{"vehicle1": {
  "title": "A super red vehicle",
  "weight": "1500 kg",
  "height": "2 m",
    "vehicle1-center_of_gravity": [
      {"x": "2 m"},
      {"y": "-0.5 m"},
      {"z": "1.5 m"}
     "vehicle1-passenger_weights": [
     {"p1": "2 m"},
     {"p2": "-0.5 m"},
     {"p3": "1.5 m"}
    "color": "red",
    ]
  }
}}

我想用文件对话框选择这个文件,然后点击阅读按钮,我的问题就在这里。是否可以将它们与单元格链接/映射,例如我有名为vehicle_title的单元格,我想用.txt文件"title": "A super red vehicle"映射此单元格。

您是否有任何经验或想法如何实现我的宏。

问候。

1 个答案:

答案 0 :(得分:2)

您可以使用此库

https://github.com/VBA-tools/VBA-JSON

在VBA中解析JSON,但是你需要在代码中进行映射:没有内置的配置/向导。

Sub Tester()

    Dim j As Object, json As String, v

    'read from file
    json = CreateObject("scripting.filesystemobject").OpenTextFile( _
                          ThisWorkbook.Path & "\example.txt").ReadAll()

    'import module from: https://github.com/VBA-tools/VBA-JSON
    Set j = JsonConverter.ParseJson(json)

    Set v = j("vehicle1")

    'some attributes...
    Debug.Print v("title")
    Debug.Print v("weight")
    Debug.Print v("vehicle1-center_of_gravity")(1)("x")

End Sub

PS JSON示例中存在一些语法错误。