Este post foi originalmente publicado em http://officevbavsto.blogspot.com/2011/03/vba-excel-arquivos-de-texto.html.

Hoje, eu escrevo sobre como trabalhar com arquivos de texto usando VBA. Quero começar com um código simples que leia linha por linha de um arquivo de texto e escreva essas linhas em uma planilha do Excel.

Sub arquivo_texto()

    'Adicionar referência ao objeto Microsoft Scripting Runtime
    
    Dim fso As FileSystemObject
    Dim txt As TextStream
    
    Set fso = New FileSystemObject
    Set txt = fso.OpenTextFile("D:\meu_arquivo.txt", ForReading, False)
    
    Do While Not txt.AtEndOfStream
    
        ThisWorkbook.Worksheets(1).Range("A65536").End(xlUp).Offset(1, 0) = txt.ReadLine
    
    Loop
    
    txt.Close
    
    Set txt = Nothing
    Set fso = Nothing

End Sub

Antes de tudo, você precisa adicionar referência à biblioteca Microsoft Scripting Runtime.

Neste exemplo, o objeto FileSystemObject permite que você abra o arquivo de texto atribuindo esse arquivo a uma variável do tipo TextStream.

O método que permite essa abertura de arquivo chama-se OpenTextFile e recebe os seguintes parâmetros:

  • FileName As String
  • [IOMode As IOMode = ForReading]
  • [Create As Boolean = False]
  • [Format As Tristate = TristateFalse]

FileName: É o endereço e nome do arquivo que você está tentando abrir;

IOMode É o modo como você quer abrir o arquivo. Veja que ele está entre colchete indicando ser opcional (você o informa ou não) e seu valor padrão é ForReading. Os valores possíveis para IOMode são:

  • ForReading: abre o arquivo como somente leitura não possibilitando escrever informação nele;
  • ForWriting: abre o arquivo como gravação sobrepondo quaisquer informações que venha a ter;
  • ForAppending: abre o arquivo como anexando o que permite adicionar conteúdo no arquivo sem sobrescrever o existente;

Create: É um argumento pessoal com valor padrão False onde indica que se o arquivo de texto não existir no endereço informado no parâmetro FileName, o método cria um novo arquivo em branco.

O próximo item a abordar é a variável do tipo TextStream. Com essa classe é possível fazer a leitura do arquivo de texto linha a linha ou todo o conteúdo de vez, escrever dados no arquivo de texto e etc.

Utilizamos uma propriedade dessa classe chamada de AtEndOfStream que indica se o arquivo já chegou ao fim (ela retorna true).

O método utilizado para ler os dados é o método ReadLine que lê a linha inteira e avança já para a próxima leitura. Quando você executar o ReadLine novamente, ele trará os dados da próxima linha.

Créditos

Photo by Pixabay from Pexels