2015-06-25 2 views
1

Я относительно новичок в VBA и хочу сделать что-то довольно простое, но в замешательстве, почему это не работает. Я читаю строки из файла и, если их открыть в блокноте ++, каждая строка имеет CRLF в конце. Я хотел бы просто удалить CR. В блокноте ++ я могу сделать замену, заменяя CRLF на LF, и все отлично работает. Тем не менее, тест, который я имею в VBA, прямо сейчас не делает это правильно. Ниже приведен пример строки, я имею дело с в Notepad ++:Заменить CarriageReturn Использование Заменить в VBA

Резюме - Я пошел на прогулку в parkCRLF

Я хочу струна стать, резюме - я пошел на прогулку в parkLF

Я пишу файл в качестве теста, чтобы узнать, работает ли он. Ниже мой код:

Do While Not txtStream.AtEndOfStream 

    str = txtStream.ReadLine 
    edited = Replace(str, Chr(13) & Chr(10), Chr(10)) 
    stream.WriteLine (edited) 

Loop 

txtStream.Close 

Код выполняется без ошибок, но CRLF еще в конце каждой строки в недавно написанной файл ... Может быть, я что-то не хватает, очевидно, но заменить не похоже, подбирают то, что я ищу. Любая помощь или совет по этому поводу будут очень признательны!

Даже выяснение, заканчивается ли конец строки CRLF, это будет шаг в правильном направлении в этой точке.

спасибо.

ответ

3
  • WriteLine автоматически помещает конец строки после строки

  • Вы должны заменить его @ предложение Марка: stream.Write(edited)

  • Выполняется лучше:

    stream.Write(Replace(txtStream.ReadAll, vbCrLf, vbLf))

    или

    stream.Write(Replace(txtStream.ReadAll, vbCr, vbLf))

.

Подробная информация о ReadAll

+1

Большое спасибо. Использование констант vbCr и vbCrLf! – Tastybrownies

3

Вы читаете строку, чтобы удалить новые символы строки. Ваш оператор замены не имеет ничего общего. Затем вы пишете строку, которая добавит новые строковые символы.

Кроме того, вы не закрываете выходной поток в примере кода, который вы предоставили.

Вы хотите что-то вроде этого:

Do While Not txtStream.AtEndOfStream 
     str = txtStream.ReadLine 
     stream.Write str & Chr(10) 
Loop 

txtStream.Close 
stream.Close 
Смежные вопросы