json - 如何在Excel VBA的垂直列中生成多个json?
问题描述
使用excel宏第一行是json文件名,第二列以后是值。
以第一列作为json对象的key,只有第二列的值,只有第三列的值。
如何分别在与Excel相同的目录中批量生成json?
比如B列就是A列的值作为key,B列的值和b1.json。C列使用A列的值作为键,C列和c1.json的值
例如,当完成的 json 的描述到 C 列时,
b1.json
[{
a2: b2,
a3: b3,
a4: b4,
}]
c1.json
[{
a2: c2,
a3: c3,
a4: c4,
}]
并想生成。
解决方案
这是显示如何创建文件的 VBA 示例。将 JSON.bas模块从VBA JSON 解析器导入 VBA 项目以进行 JSON 处理,并包含对“Microsoft Scripting Runtime”的引用(看看这里如何导入模块和添加引用)。
将以下代码放入标准模块中:
Option Explicit
Sub test()
With ActiveSheet.Cells(1, 1).CurrentRegion
If .Cells.Count < 4 Then
MsgBox "No data"
Exit Sub
End If
Dim source
source = .Value
End With
Dim i
For i = 2 To UBound(source, 2)
Dim data
Set data = New Dictionary
Dim j
For j = 2 To UBound(source, 1)
data(source(j, 1)) = source(j, i)
Next
saveTextToFile _
JSON.Serialize(Array(data)), _
ThisWorkbook.path & "\" & source(1, i) & ".json", _
"UTF-8"
Next
MsgBox "Completed"
End Sub
Sub saveTextToFile(content, filePath, charset)
With CreateObject("ADODB.Stream")
.Type = 2 ' adTypeText
.Open
.charset = charset
.WriteText content
.Position = 0
.Type = 1 ' TypeBinary
.SaveToFile filePath, 2
.Close
End With
End Sub
我测试代码的源数据:
输出如下:
文件1.json
[
{
"prop1": "Alice",
"prop2": "Bob",
"prop3": "Charlie",
"prop4": "Eve",
"prop5": "Dan"
}
]
文件2.json
[
{
"prop1": "Tomatoes",
"prop2": "Bananas",
"prop3": "Watermelons",
"prop4": "Apples",
"prop5": "Grapefruit"
}
]
文件 3.json
[
{
"prop1": "Russia",
"prop2": "Canada",
"prop3": "USA",
"prop4": "China",
"prop5": "Brazil"
}
]
顺便说一句,其他答案中应用的类似方法。
推荐阅读
- azure-service-fabric - Service Fabric SDK 与 RunTime 之间的区别
- python - 将 Django 模型链接在一起
- python - 删除任何列中具有特定值的行
- security - OpenVAS:CLI 漏洞扫描 [CentOS]
- c++ - c++11可变参数模板编译失败
- excel - 由于运行类型错误 13 Outlook 导致代码未执行循环
- java - Java泛型——类型参数的引用类型参数
- objective-c - 数据源不为空后才填充UITableView
- java - IBM AS4 客户端 (com.ibm.b2b.as4.client) - 如何设置代理主机?
- python - 对从 Statsmodel 中的 OLS 模型创建的稳健回归模型进行故障排除