Vba 为什么使用print写入csv文件会将一行分成两行?

Vba 为什么使用print写入csv文件会将一行分成两行?,vba,csv,Vba,Csv,字符串xyz写在两行而不是一行上 xyz的长度有任何限制吗?同时提及单元格以进行写入,例如 单元(1,1)=xyz 它将写入第一行和第一列 Public Function WriteToFile(xyz As String) Dim PathToFile As String Dim FileNumber As Long Open PathToFile For Output As #FileNumber Print #FileNumber, xyz End Fun

字符串xyz写在两行而不是一行上


xyz的长度有任何限制吗?

同时提及单元格以进行写入,例如

单元(1,1)=xyz

它将写入第一行和第一列

Public Function WriteToFile(xyz As String)
    Dim PathToFile As String
    Dim FileNumber As Long

    Open PathToFile For Output As #FileNumber
    Print #FileNumber, xyz
End Function
对于超过2 GB的尺寸,请使用以下代码:

Sub testWriteToFile()
    WriteToFile "abcd", "Your file Full Name"
    TextStreamWrite "abcde", "Your second file Full Name"
End Sub
Public Function WriteToFile(xyz As String, PathToFile As String)
    FreeFile 1

    Open PathToFile For Output As #1
      Print #1, xyz
    Close #1
End Function

不要忘了用文件路径替换“您的文件全名”和“您的第二个文件全名…”。

我的代码可以工作到特定长度的字符串
xyz
,因此我想知道它们的长度限制是多少,或者为什么不适用于长度为55000的字符串
打开输出的限制看起来是2GB(用于生成的.txt文件)。请看,我的第二个变体(在我的回答中)的大小大于2GB。什么是“写在两行而不是一行上”平均值?@FaneDaru字符串包含逗号分隔的值。此数据应写入不同列中的一行。但是,在写入第一行中的某个字符串长度后,剩余数据将写入下一行,但大小不超过2 GB。它小于1 MB。您尝试过第二种建议的解决方案吗?我从未尝试过在讨论。我刚刚读过,没有这样的需要…但你没有说任何关于.csv的内容…你如何准备将字符串放入.csv文件?@rs4:但你没有说任何关于.csv的内容…你如何准备将字符串放入.csv文件?我的示例回答了你的问题。它将一个大字符串放入.txt/.csv文件中.但你的问题似乎是如何构建字符串…@rs4:你能在这里发布讨论构建中字符串的方式吗?也许我可以帮助你找到一个快速解决方案(使用数组并只在内存中工作)…CSV在问题标题中提到。如果字符串中有逗号分隔的值,并且在CSV文件中打印该值,则该值将按照逗号转换为一行不同的列
Private Function TextStreamWrite(xyz As String, PathToFile As String)
    Const ForReading = 1, ForWriting = 2, ForAppending = 3
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
    Dim fs, f, ts, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.CreateTextFile PathToFile
    Set f = fs.GetFile(PathToFile)
    Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)
        ts.Write xyz
    ts.Close
End Function