我有一段代码如下:
Open "output.txt" For Output As #1
s = "abc" & chr(10) & "def"
Msgbox s
print #1, s
当我运行此代码时,Msgbox
会打印2行。但是,在output.txt
中,会打印abcdef
。
有谁知道如何将多行的字符串输出到文件中?
答案 0 :(得分:5)
要使其显示在文本文件中的单独行中,您需要Chr(13) & Chr(10)
或vbCrLf
,或者如果您在excel vba vbNewLine
中。所有这些都将提供所需的回车Chr(13)
和换行符Chr(10)
字符以产生换行符。
示例(全部3产生相同结果):
"First Line" & Chr(13) & Chr(10) & "Second Line"
"First Line" & vbCrLf & "Second Line"
"First Line" & vbNewLine & "Second Line"
输出:
"First Line"
"Second Line"
答案 1 :(得分:0)
我建议使用TextStream对象(通过FileSystemObject的CreateTextFile方法)。这将使您能够根据需要分离行。
例如,您的情况将改为:
Dim fso As FileSystemObject ' Declare a FileSystemObject.
Set fso = New FileSystemObject ' Create a FileSystemObject.
Dim stream As TextStream ' Declare a TextStream.
Set stream = fso.CreateTextFile("C:\output.txt", True)
stream.WriteLine "abc"
stream.WriteLine "def"
stream.Close
MSDN涵盖了这一点:http://msdn.microsoft.com/en-us/library/office/gg264514.aspx
答案 2 :(得分:0)
这是我的解决方案: 添加额外的字符串而不是断路器。例如,我的单元格的值是“测试#BR#jump#BR#lines”然后我使用了split函数并使用for循环逐行写入文件:
For xrow = 2 To 10
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim oFile As Object
Set oFile = fso.CreateTextFile("C:\test\History_" & Cells(xrow , 1) & ".txt")
matLines = Split(Cells(xrow, 2), "#BR#")
For line = 0 To UBound(matLines)
oFile.WriteLine matLines(line)
Next line
oFile.Close
Set fso = Nothing
Set oFile = Nothing
Next xrow
结果是逐行文件。