Запись строки из нескольких строк в файл


У меня есть такой фрагмент кода:

Open "output.txt" For Output As #1
s = "abc" & chr(10) & "def"
Msgbox s
print #1, s

Когда я запускаю этот код, Msgbox выводит 2 строки. Однако, в output.txt, abcdef печатается.

Кто-нибудь знает, как вывести строку из нескольких строк в файл?

3 2

3 ответа:

Для его отображения на отдельных строках в текстовом файле вам понадобится 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"

Вместо этого я рекомендую использовать объект 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

Результатом был файл строка за строкой.