将VBA Excel保存到文本文件时将其转换为JSON数据会添加额外的双引号-VBA Excel

时间:2019-02-16 18:18:46

标签: json excel vba

我正在使用该库将我的Excel表数据转换为json。当我在控制台或excel单元格值上打印它时,我确实看到了我正在寻找的json格式数据,但是当我将其保存到一些txt文件中时。我看到添加了额外的报价。

我的将Json保存到文件的代码

Dim myFile As String
myFile = "C:\Users\test\Desktop\data.json"
Open myFile For Output As #1
    Write #1, Range("A10").Value  ' Or json (containing data)
Close #1

首先,我将单元格从A1转换为F6,将其转换为json对象数组。格式:

正确的版本

[
    {"key1": "val1", "key2": "val2", "key3": "val3", "key4": "val4"},
    {"key11": "val11", "key12": "val12", "key13": "val13", "key14": "val14"},
    {"key21": "val21", "key22": "val22", "key23": "val23", "key24": "val24"}
]

然后将其保存到data.json文件。但是我在文件中得到了。

版本错误

"[
{""key1"":""val1"",""key2"":""val2"",""key3"":""val3"",""key4"":""val4"",""key5"":""val5""}
{""key21"":""val21"",""key22"":""val22"",""key23"":""val23"",""key24"":""val24"",""key25"":""val25""}
]"

当我在VBA或任意一个excel单元格中将相同的json数据打印到控制台(立即窗口)时,我会看到正确的版本。

我不明白我要去哪里错了?

这些是我正在使用的库,它给出的结果相同:

蒂姆大厅-https://github.com/VBA-tools/VBA-JSON 我还创建了自己的json转换器,但得到的结果相同。

2 个答案:

答案 0 :(得分:2)

将写更改为打印

Print #1, Range("A10").Value  

答案 1 :(得分:0)

我有一个类似的问题,可以通过执行以下操作解决:

Open myFile For Input As #1
NewData = Input$(LOF(1), #1)
Close #1

NewData = Replace(NewData, """", "!")
NewData = Replace(NewData, "!!", """")
NewData = Replace(NewData, "!", "")

ml.Cells(x,y) = NewData

这可能不是最好的方法,但是我最终得到了我的json以我期望的方式打印,没有附加引号。