Importar TXT, via VBA
Adquira a assinatura vitalícia do site e passe a ter acesso aos arquivos exemplos, vídeos, revistas, livros e ao kit de montagem de ribbons. Você terá suporte por e-mail, caso necessite tirar dúvidas pontuais. Clique AQUI e veja como obter um dos nossos planos. Clique AQUI e faça uma visita a seção Downloads do site e verifique as centenas de arquivos que estará à sua disposição. Clique AQUI e faça uma visita a seção Vídeos do site e veja a lista que estará disponível ao se tornar o nosso assinante vitalício. Clique AQUI e saiba mais detalhes sobre o kit de montagem de ribbons (deixe seus aplicativos com aspecto profissional).
Usuário Leandro:
Boa tarde.
Quero importar um arquivo de texto pelo VBA, mas preciso que seja habilitada a janela de escolha do diretório e arquivo (FileDialog). Não uso a importação padrão, pois o nome e o diretório do arquivo mudam sempre, sendo assim fica difícil também usar um arquivo ini de configuração.
O arquivo é delimitado por vírgulas (,) e o delimitador decimal é o ponto (.).
A tabela no Microsoft Access possui os mesmos nomes nos campos e a mesma propriedade:
num_id_ponto = inteiro longo
latitude = duplo
longitude = duplo
dat_col_time = data/hora
num_ponto = texto
num_equip = texto
ref = texto
A quantidade de linhas do arquivo é variável, pode ser superior a 65.000
Um arquivo de texto de exemplo:
num_id_ponto,latitude,longitude,dat_col_time,num_ponto,num_equip,ref
1,-28.918343,-49.974716,01/09/2017 10:57:59,0,R4S45699987,
55,-11.928281,-34.95093,23/08/2017 17:03:23,9123456789,R4S45699988,AC010199
Você tem alguma sugestão?
Obrigado.
Suporte:
Leandro,
se cada registro está em uma linha, basta utilizar o seguinte código:
Dim strLinha as String
Dim k
Dim StrSql$
OPEN "c:\MinhaPasta\meuArquivo.txt" FOR Input AS #1
Do while not eof(1) 'percorre todas as linhas do arquivo texto
Line Input #1, strLinha 'passa o conteúdo da linha para a string strLinha
k = split(strlinha,",") 'passa a linha para uma Matriz
'passa os valores para tabela
strSql = "INSERT INTO NomeDaTabela (num_id_ponto,latitude,longitude)
strSql = strsql & " VALUES('" & k(0) & "','" & k(1) & "','" & k(2) & "');"
Currentdb.execute strSql
loop
Close #1
Ponha isso em um botão e teste.
Usuário Leandro:
Bom dia!
Esse código funcionou perfeitamente! Fiz alguns ajustes para usar o FileDialog.
Muito obrigado, Avelino.
2 comentário(s) Hebertti Sales 14/02/2020 10:49:32 Avelino. Tenho um arquivo txt delimitado. como puxo ele direto ? ja existe uma tabela como as colunas iguais. tem como ? obrigado Tiago 30/05/2018 11:00:24 Muito bom o código! Contudo, como podemos programar para que o código consiga pular(ignorar) a primeira linha do arquivo aonde estão contidos os cabeçalhos? Obrigado. |