在excel VBA中,如何编写自定义函数将范围转换为json数组?
我现在只有函数签名:
Function to_json(input As Range)
End Function我需要将输入转换为json数组,如下所示
[
[4,"foo"],
["bar",5]
]我该怎么做?
它的最终目标是将json发布到web服务,以类似的格式获得响应,并将其作为range对象返回。
编辑:输入范围可以包括数字和字符串的任意组合。我需要将它们复制到一个2维的json数组中,如示例所示。注意,我需要json数组,而不是json对象。
我搜索了一段时间,但找不到任何明显的答案。
edit2:在js中,答案非常简单:JSON.stringify(输入),是否有一个简单的vba等效?
发布于 2022-01-02 14:02:03
对于全面的解决方案,请使用JsonConverter,但对于简单的特定情况,请尝试
Function to_json(rng As Range)
Dim ar, v, i As Long, j As Long, qq As String
Dim js As String, r As String
qq = Chr(34)
ar = rng.Value
For i = 1 To UBound(ar)
r = "["
For j = 1 To UBound(ar, 2)
v = ar(i, j)
'Debug.Print i, j, v, VarType(v)
Select Case VarType(v)
Case vbError
v = ""
Case vbNull, vbEmpty
v = "null"
Case vbDate
v = qq & Format(v, "yyyy-mm-dd") & qq
Case vbString
v = qq & Replace(v, qq, "\" & qq) & qq
Case Else
End Select
If Len(r) > 1 Then r = r & ","
r = r & v
Next
r = r & "]"
If Len(js) > 0 Then js = js & ","
js = js & r
Next
to_json = "[" & js & "]"
End Function发布于 2022-01-02 17:46:21
感谢大家推荐到github.com/VBA-tools/VBA。以下是供今后参考的完整解决方案:
如https://github.com/VBA-tools/VBA-JSON
Function to_json(input As Range)
to_json = JsonConverter.ConvertToJson(input.Value)
End Functionhttps://stackoverflow.com/questions/70553265
复制相似问题