Como gravar um arquivo de texto sem [0D 0A (VBCRLF)] no final usando o vba

0

Estou desenvolvendo um processo que

copie o arquivo de texto e edite o conteúdo do arquivo de texto de acordo com os dados do Excel usando FileSystemObject.

Embora o Código de quebra de linha do arquivo de texto original seja [0A (VBLF)],

após a edição, o Código de quebra de linha do arquivo de texto atualizado se torna [0D 0A (VBCRLF)].

Gostaria de escrever o código de quebra de linha como arquivo de texto original.

Qual a melhor maneira para fazer isto? Desde já, obrigado.

user275763
fonte

Respostas:

1

Se você escrever seu arquivo de texto linha por linha, poderá escolher sua quebra de linha

Sub sampleWriteVBLF()

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set objFile = fso.CreateTextFile("D:\test.txt", True)

    objFile.Write "Hello" & vbLf
    objFile.Write "World" & vbLf

    objFile.Close

End Sub

insira a descrição da imagem aqui

            VBA       VBA               HEX     NAME
LF    \n    VbLf      Chr(10)           0x0A    Line Feed
CR    \r    VbCr      Chr(13)           0x0D    Carriage Return
CR+LF \r\n  VbCrLf    Chr(10)&Chr(13)   0x0D0A  Carriage Return Line Feed    

Editar: você deve usar, .writeporque .WriteLinesempre acrescentará uma quebra de linha CRLF adicional. Mas você já tem uma quebra de linha LF

nixda
fonte
Obrigado pela resposta. Mas eu testei dessa maneira. Depois de escrever dessa maneira, o Código de quebra de linha do arquivo de texto atualizado se torna [0A 0D 0A]. Eu quero apenas [0A]. Por favor, me explique.
user275763
@ user275763 Que sistema operacional e editor para visualizar a quebra de linha que você está usando?
Nixda
Estou usando o sistema operacional: Window7 editor para visualizar a quebra de linha: Stirling
user275763
@ user275763 Você está usando em .Writelinevez de .Write? Isso explicaria por que você recebe LF + CRLF (ou no HEX 0A 0D 0A) #
nixda
Muito obrigado. Eu recebi apenas o Line Break Code [OA] depois de usar .Write. >> Você está usando .Writeline em vez de .Write? Yes.I estava usando .Writeline. Muito obrigado por explicar a diferença entre of .Write e .Writeline.
user275763