O delimitador é o ponto-e-vírgula.
Arquivo texto sem cabeçalho.
;-)
Sub importa_delimitado() Dim entrada As String 'linha do txt Dim i As Single 'número de caracteres Dim linha As Integer Dim coluna As Integer Dim texto As String 'texto a ser gravado na célula Dim ultimo As Boolean 'controle do último caracter da linha Open "C:\Users\kazu\Desktop\pasta1.csv" For Input As #1 linha = 1 coluna = 1 Do While Not EOF(1) Line Input #1, entrada For i = 1 To Len(entrada) If Mid(entrada, i, 1) = ";" Then Cells(linha, coluna).Value = texto coluna = coluna + 1 texto = "" Else 'Se for o último caracter, grava na célula If i = Len(entrada) Then texto = texto & Mid(entrada, i, 1) Cells(linha, coluna).Value = texto coluna = coluna + 1 texto = "" ultimo = True End If If Not ultimo Then texto = texto & Mid(entrada, i, 1) End If ultimo = False Next linha = linha + 1 coluna = 1 Loop Close #1 End Sub
4 comentários:
Prezado Kazu, há casos de arquivos de textos delimitados por número de caracteres (largura de coluna variável), a exemplo da Pnad/IBGE. Sabe indicar uma solução excel VBA para esses casos?
at
edmar
Edmar, boa noite!
Não conheço o arquivo, você consegue enviar um exemplo?
Olhei no site do IBGE mas não achei...
Olá Kazu.
Veja no exemplo a baixo a linha de código, que corresponde apenas a uma parte do txt de uma PNAD (apenas para ilustrar...)
.TextFileFixedColumnWidths = Array _
(2, 8, 7, 4, 9, 1, 2, 2, 2, 1, 2, 2, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, 1, 3)
Os números 2, 8, 7 ... informam ao excel como separar o txt em colunas de tamanho coerente
com a biblioteca do arquivo de dados.
Eu queria uma macro que possibilitasse ao usuário entrar com esses dados usando intervalos de células, pois os txt's mudam de um ano para outro.
Vc pode achar o txt do IBGE em http://downloads.ibge.gov.br/downloads_estatisticas.htm
Depois vá em Trabalho e rendimento/ Pesquisa nacional por amostra de domicilios/microdados/ 2013
Grato pela atenção
edmar
Sou aprendiz de VBA, precisava de um código que conseguisse importar um arquivo texto delimitado, localizei este publicado no seu blog em 2010.
Percebi que o último registro não importou e não tenho conhecimento ainda para localizar o ajuste necessário, conseguiria me ajudar, por gentileza.
Parabéns pelo seu trabalho, tu é fera.
Postar um comentário