Arquivos de texto com VBA - Parte 1
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.