停止访问将两组双引号写入 csv
Posted
技术标签:
【中文标题】停止访问将两组双引号写入 csv【英文标题】:Stop Access writing two sets of double quotes to csv 【发布时间】:2016-10-14 11:27:44 【问题描述】:所以,我正在使用记录集的输出并将其写入 csv 文件。但是我遇到了引号问题。理想情况下,我想将它们作为文本标记包含在内。但是,如果我将它们包含在我的文本行中,它们会被打印为两组引号。
我想要这个作为输出(由制表符分隔):
"Header1" "header2" "......[]...."headerX"
我试过了
Sub Write_Tbl(Filename, StrSQL)
Dim unicode, UTF, i As Long , Fileout As Object, forwriting, TristateUseDefault, TxtStr As String, TextHolder As String, rs As Recordset
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim File_out As Object
Set File_out = fso.CreateTextFile(Filename, True, unicode = UTF - 8)
File_out.Close
Open Filename For Output As #1
Set rs = CurrentDb.OpenRecordset(StrSQL)
rs.MoveFirst
'for headers
TxtStr = rs.Fields.Item(0).Name 'so that there isn't a tab at the start of the string
For i = 1 To rs.Fields.Count - 1
TxtStr = TxtStr & chr(34) & vbTab & chr(34) & rs.Fields.Item(i).Name
Next i
Write #1, TxtStr & chr(34) 'write headers to file
并将其作为输出
""Header1"" ""header2"" ""......[]....""headerX""
所以我去掉了引号,得到了这个:
'for headers
TxtStr = rs.Fields.Item(0).Name 'so that there isn't a tab at the start of the string
For i = 1 To rs.Fields.Count - 1
TxtStr = TxtStr & vbTab & rs.Fields.Item(i).Name
Next i
Write #1, TxtStr 'write headers to file
我得到的是
"Header1 header2 ......[]....headerX"
如果我在本地窗口中监视变量,那么只有一组引号,所以它一定与打印有关?如果我使用单引号(ascii no 39)就不会发生这种情况。我也尝试只使用写入文件,而不是作为文本流,但我遇到了内存问题和ERROR 5 issues. STUMPED。请帮忙。
【问题讨论】:
在另一个说明中,这样做: Dim unicode, UTF, i As Long 只会将 i 变暗,其他变体,你需要:'Dim unicode As Long, UTF As Long, i As长' 谢谢,这实际上是我的意图,但是在 vba 中编码很长一段时间以来,我都不知道它会这样工作,这是一个很好的且广泛无证的观点。 【参考方案1】:如果您已在 VBA 中准备好文本字符串,则应使用 Print #
语句而不是 Write #
。
文档:Print #
与 Write #
与 Print # 语句不同,Write # 语句在写入文件时在项目和字符串周围的引号之间插入逗号。
注意:
我不确定这些函数是否编写 Unicode,或者关心文件是如何创建的。
Open Filename For Output As #1
如果文件不存在,将创建该文件,因此您可以省略整个 CreateTextFile
部分。
或者改用File_out.WriteLine()
,混合使用这两种方法(FSO 和古老的 Print/Write 语句)似乎很奇怪。
编辑:见How to create and write to a txt file using VBA
【讨论】:
谢谢,这真的很有帮助。以上是关于停止访问将两组双引号写入 csv的主要内容,如果未能解决你的问题,请参考以下文章
python处理完CSV数据后重新写入新CSV文件,为啥新文件用记事本打开没有双引号?该怎么解决?谢谢