VBA – Como Automatizar Importação de Dados TXT.

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:

1 - automatizar importação de dados excel

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.