Vba 停止Access将两组双引号写入csv
因此,我使用记录集的输出并将其写入csv文件。但我有一个引号的问题。理想情况下,我希望将它们作为文本标记。但是如果我把它们包括在我的文本行中,它们会被打印成两组引号 我希望将其作为输出(由制表符分隔): “Header1”“header2”“headerX” 我试过这个Vba 停止Access将两组双引号写入csv,vba,csv,ms-access,Vba,Csv,Ms Access,因此,我使用记录集的输出并将其写入csv文件。但我有一个引号的问题。理想情况下,我希望将它们作为文本标记。但是如果我把它们包括在我的文本行中,它们会被打印成两组引号 我希望将其作为输出(由制表符分隔): “Header1”“header2”“headerX” 我试过这个 Sub Write_Tbl(Filename, StrSQL) Dim unicode, UTF, i As Long , Fileout As Object, forwriting, TristateUseDefault,
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),则不会发生这种情况。我也尝试过只使用write to file,而不是作为文本流,但我遇到了内存问题并被难倒。请帮助。如果您已经用VBA准备好了文本字符串,您应该使用
Print
语句,而不是write
文档:vs
与Print#语句不同,Write#语句在写入文件时在项目之间和字符串周围的引号之间插入逗号
注:
我不确定这些函数是否编写Unicode,或者是否关心文件是如何创建的
Open Filename For Output As #1
如果文件不存在,将创建该文件,因此您可能可以省略整个CreateTextFile
部分
或者使用File\u out.WriteLine()
来代替,混合使用这两种方法(FSO和古老的打印/写入语句)似乎很奇怪
编辑:请参见另一个注释,这样做:Dim unicode,UTF,i As Long将仅Dim i As Long,其他作为变体,您需要:'Dim unicode As Long,UTF As Long,i As Long'谢谢,实际上我是有意这么做的,但在很长一段时间内,我不知道它是这样工作的,这是一个极好的且广泛未被记录的观点谢谢,这真的很有帮助。