Запись строки из нескольких строк в файл
У меня есть такой фрагмент кода:
Open "output.txt" For Output As #1
s = "abc" & chr(10) & "def"
Msgbox s
print #1, s
Когда я запускаю этот код, Msgbox
выводит 2 строки. Однако, в output.txt
, abcdef
печатается.
Кто-нибудь знает, как вывести строку из нескольких строк в файл?
3 ответа:
Для его отображения на отдельных строках в текстовом файле вам понадобится
Chr(13) & Chr(10)
илиvbCrLf
, или если вы находитесь в excel vbavbNewLine
. Все это обеспечит необходимый возврат каретки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"
Вместо этого я рекомендую использовать объект TextStream (через метод CreateTextFile FileSystemObject). Это даст вам возможность отделять линии по мере необходимости.
Например, ваша ситуация будет выглядеть следующим образом:
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
Это было мое решение.: Добавьте дополнительную строку вместо прерывателя линии. Например, значение моей ячейки - "testing#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
Результатом был файл строка за строкой.