Sco*_*man 1 string excel vba json
以下代码
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
Run Code Online (Sandbox Code Playgroud)
产生这样的输出:
"{""docType"":""DRAFT"",""riskState"":""NY""}"
我无法弄清楚如何阻止 VBA 字符串语法打印到文件中(转义引号和前导/尾随引号)。
有任何想法吗?
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
Run Code Online (Sandbox Code Playgroud)
请注意,您应该始终使用该FreeFile
函数返回一个打开的文件句柄,而不是对数字进行硬编码 - 这避免了句柄冲突和意外文件访问的可能性。