以下代码
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字符串语法打印到文件中(转义引号和前导/尾随引号)。
有什么想法吗?
答案 0 :(得分:4)
VBA具有两组不同的文本文件处理功能:
Write #
和Input #
旨在与“结构化”文件(.csv)一起使用,并使用文本限定的数据-任何带有字符串的String
或Variant
子类型的双引号转义为""
,整个内容都用引号引起来。
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
函数返回打开的文件句柄,而不是对数字进行硬编码-这样可以避免出现句柄冲突和意外文件访问的可能性。