No artigo de hoje vamos aprender como ler informações oriundas de arquivos de texto. Este tipo de procedimento é realmente importante quando trabalhamos com fontes de dados diferentes do formato Excel e principalmente quando lidados com troca de informações entre áreas com diferentes processos. Os arquivos do tipo texto são leves e permite que tenhamos uma formatação específica e padronizada para cada aplicação.
Começando pela importação de uma informação em .txt, vamos considerar um arquivo de texto que contenha as seguintes informações sobre um vôo:
Vamos criar um código em VBA que consiga atualizar uma célula no Excel com as informações sobre os horários de partida e de chegada. Abrindo o Excel, vamos criar um botão que executará nossa aplicação, e nomeá-lo como “Dados voo”.
Agora, abra a janela de edição de código em VBA pressionando ALT + F11 e vamos criar uma sub() chamada voos.
Sub voos()
Dim arquivo As String, texto As String, linhaTexto As String
Dim chegada As String, partida As String
arquivo = “R:\Users\sog1624\Desktop\voos.txt”
Open arquivo For Input As #1
Do Until EOF(1)
Line Input #1, linhaTexto
texto = texto & linhaTexto
Loop
Close #1
partida = InStr(texto, “horarioPartida: “)
chegada = InStr(texto, “horarioChegada: “)
Range(“A1”).Value = Mid(texto, partida + 16, 5)
Range(“A2”).Value = Mid(texto, chegada + 16, 5)
End Sub
Vamos explicar o passo a passo do código.
Começamos pela declaração das variáveis que vamos usar:
Dim arquivo As String, texto As String, linhaTexto As String
Dim chegada As String, partida As String
Todas elas do tipo String (As String). Em seguida indicamos qual é a origem do nosso arquivo para a variável arquivo e abrimos com o comando Open.
arquivo = “R:\Users\sog1624\Desktop\voos.txt”
Open arquivo For Input As #1
Agora, temos o loop que lê cada linha do arquivo texto (linhaTexto) até o seu fim (EOF – end of line) e armazena o conteúdo na variável texto
Do Until EOF(1)
Line Input #1, linhaTexto
texto = texto & linhaTexto
Loop
Agora, fechamos o arquivo aberto com o comando Close #1. Nas variáveis partida e chegada, atribuímos o começo da string texto onde contém a informação que desejamos extrair.
partida = InStr(texto, “horarioPartida: “)
chegada = InStr(texto, “horarioChegada: “)
Por fim, atribuímos às células A1 e A2 os valores correspondentes aos horários de partida e chegada do voo. Utilizamos a função Mid() que, dado uma string como parâmetro, podemos deslocar um valor correspondente de caracteres (16) e capturar os 5 próximo caracteres, que correspondem ao formato de hora HH:MM (somando o separador “:”);
Range(“A1”).Value = Mid(texto, partida + 16, 5)
Range(“A2”).Value = Mid(texto, chegada + 16, 5)
Para finalizar, atribuímos nossa Sub voo () ao botão que criamos.
Ao clicar no botão, a informação será disponibilizada nas células A1 e A2.
O procedimento pode parecer simples, mas imagine que você tenha milhares de arquivos com este padrão. São nesses processos de automatização que o conhecimento em VBA no Excel faz a diferença para a execução de um bom trabalho.