【发布时间】: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 中编码很长一段时间以来,我都不知道它会这样工作,这是一个很好的且广泛无证的观点。