使用VBA将包含引号的字符串发送到文件

问题描述

我试图使用VBA构建.jet文件,但是当我尝试追加时,出现两个可能的问题。它要么包含所有双引号,包括像您通常在msgBox中一样的双双引号,要么如果我删除双双引号,则该字符串将无法工作,因为双引号的第一个实例终止了该字符串。下面是我的代码示例(请注意,main子句中的注释/缩进区域是我尝试过但未成功的各种可能性:

Sheets("Sheet1").Range("A1").Select
Dim MyStr As String
  'MyStr = "{" & Chr(34) & "myid" & Chr(34) & ":345," & Chr(34) & "content" & Chr(34) & ":["
  'MyStr = "{""myid"":345,""content"":["

  'appendToFile ("{""myid"":345,""content"":[")
  'appendToFile (MyStr)
End Sub


Sub appendToFile(MyStr As String)
Dim fileName As String
 fileName = "MyFile.jet"
Open Application.ActiveWorkbook.Path & "\" & fileName For Append As #1
    Write #1,MyStr
Close #1
End Sub

解决方法

如果您想避免多余的引号出现在.jet中,可以使用append语句而非Print #语句Write #

Print #语句不同,Write #语句在将项目和写入字符串的引号之间插入逗号

例如,此代码:

Option Explicit
Sub ject()
Dim MyStr As String
  
  MyStr = "{" & Chr(34) & "myid" & Chr(34) & ":345," & Chr(34) & "content" & Chr(34) & ":["
  
  appendToFile (MyStr)
End Sub


Sub appendToFile(MyStr As String)
Dim fileName As String
 fileName = "MyFile.jet"
Open Application.ActiveWorkbook.path & "\" & fileName For Append As #1
    Print #1,Close #1
End Sub

将导致:

{"myid":345,"content":[

使用文本编辑器打开.jet文件时。

这就是你想要的吗?