因此,我使用记录集的输出并写入csv文件。但是我的引号出现了问题。理想情况下,我希望将它们包含为文本标记。但如果我将它们包含在我的文本行中,它们将被打印为两组引号。
我想将此作为输出(由制表符分隔):
"头1" " 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
并将其作为输出
""头1"" "" 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而不是文本流,但是我遇到了内存问题并且ERROR 5 issues. STUMPED。请帮忙。
答案 0 :(得分:1)
如果您已在VBA中准备好文本字符串,则应使用Print #
语句而不是Write #
。
与 Print#语句不同, Write#语句会在字符串写入文件时在字符串和引号之间插入逗号。
注意:
我不确定这些函数是否完全写入Unicode,或者关心文件的创建方式。
Open Filename For Output As #1
如果文件不存在,将创建该文件,因此您可以省略整个CreateTextFile
部分。
或者使用File_out.WriteLine()
代替,混合两种方法(FSO和古老的Print / Write语句)似乎很奇怪。