VBA:将JSON打印到文本文件包括双引号

时间:2018-10-08 21:44:29

标签: json excel string vba

以下代码

Dim theJSON As String
theJSON = "{""docType"":""DRAFT"",""riskState"":""NY""}"

theFileName = "C:\test.json"

Open theFileName For Output As #1
Write #1, theJSON 'jsonSerialization
Close #1

产生这样的输出:

  

“ {”“ docType”“:”“ DRAFT”“,”“ riskState”“:”“ NY”“}”

我无法弄清楚如何阻止VBA字符串语法打印到文件中(转义引号和前导/尾随引号)。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

VBA具有两组不同的文本文件处理功能:

Write #Input #旨在与“结构化”文件(.csv)一起使用,并使用文本限定的数据-任何带有字符串的StringVariant子类型的双引号转义为"",整个内容都用引号引起来。

Print #Input(number, #filenumber)旨在与“非结构化”文件一起使用。

解决方案是使用Print而不是Write

Dim theJSON As String
theJSON = "{""docType"":""DRAFT"",""riskState"":""NY""}"

theFileName = "C:\test.json"

Dim handle As Integer
handle = FreeFile
Open theFileName For Output As #handle
Print #handle, theJSON 'jsonSerialization
Close #handle

请注意,您应始终使用FreeFile函数返回打开的文件句柄,而不是对数字进行硬编码-这样可以避免出现句柄冲突和意外文件访问的可能性。