Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Importar TXT sem delimitador
Importar TXT sem delimitador
Boa noite!
Eu tenho que importar mensalmente um arquivo txt semelhante a esse em anexo e gostaria de automatizar esta importação para facilitar meu trabalho.
Seguindo alguns exemplos que encontrei aqui, consegui fazer tal importação, porém não do jeito que preciso, pois eu gostaria de importar somente registros válidos (que começam com data na primeira coluna) e posicioná-los em colunas separadas do excel.
Caso possam me ajudar, ficarei grato.
Eu tenho que importar mensalmente um arquivo txt semelhante a esse em anexo e gostaria de automatizar esta importação para facilitar meu trabalho.
Seguindo alguns exemplos que encontrei aqui, consegui fazer tal importação, porém não do jeito que preciso, pois eu gostaria de importar somente registros válidos (que começam com data na primeira coluna) e posicioná-los em colunas separadas do excel.
Caso possam me ajudar, ficarei grato.
- Anexos
-
- Arquivo.rar
- (1.5 KiB) Baixado 333 vezes
Re: Importar TXT sem delimitador
Você pode fazer isso de várias formas, vou enumerar duas e você escolhe qual é a mais simples pra você.
1. Importar o arquivo diretamente com delimitadores no Excel em uma sheet temporária (gravando uma macro você consegue pegar o código certinho) e depois faz uma verificação para identificar o que for data e vai excluindo as linhas inválidas.
2. Abrir o arquivo com "Open For Input" e ler as linhas uma a uma, verificando se é data e já ir salvando na sheet definitiva do Excel.
Espero ter ajudado.
Abçs.
Marcus.
1. Importar o arquivo diretamente com delimitadores no Excel em uma sheet temporária (gravando uma macro você consegue pegar o código certinho) e depois faz uma verificação para identificar o que for data e vai excluindo as linhas inválidas.
2. Abrir o arquivo com "Open For Input" e ler as linhas uma a uma, verificando se é data e já ir salvando na sheet definitiva do Excel.
Espero ter ajudado.
Abçs.
Marcus.
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Importar TXT sem delimitador
Narsi, fica difícil identificar em um texto sem delimitadores qual o tamanho/conteúdo de cada campo/coluna; poste seu modelo excel identifique o que consegue importar, e em uma outra sheet detalhe como deveria ser; pois assim devera ser possível identificar o layout que voce espera/deseja
Re: Importar TXT sem delimitador
Boa noite!
Marcus, eu já tinha feito como você sugeriu na opção 1, estava usando assim e funcionava bem, porém meu arquivo esta ficando muito grande (já são 8 meses) e minha intenção era melhorar o código para conseguir importar somente o mês em curso. Por isso eu pedi ajuda, já que não consegui ler e gravar somente as linhas que contém informações que eu preciso (que iniciam a linha com data).
Reinaldo, os campos tem sempre o mesmo tamanho. Isso é um facilitador, mas meu problema é não conseguir mesmo ler linha a linha e identificar se ela começa com data.
De qualquer forma, segue uma arquivo de exemplo de como eu estava fazendo.
Desde já obrigado.
Marcus, eu já tinha feito como você sugeriu na opção 1, estava usando assim e funcionava bem, porém meu arquivo esta ficando muito grande (já são 8 meses) e minha intenção era melhorar o código para conseguir importar somente o mês em curso. Por isso eu pedi ajuda, já que não consegui ler e gravar somente as linhas que contém informações que eu preciso (que iniciam a linha com data).
Reinaldo, os campos tem sempre o mesmo tamanho. Isso é um facilitador, mas meu problema é não conseguir mesmo ler linha a linha e identificar se ela começa com data.
De qualquer forma, segue uma arquivo de exemplo de como eu estava fazendo.
Desde já obrigado.
- Anexos
-
- Arquivo Teste.rar
- (27.93 KiB) Baixado 304 vezes
Re: Importar TXT sem delimitador
Se puder, entra em contato comigo pelo e-mail marcus@excelflex.com.br ou pelo WhatsApp 21 99322-7969 para eu ver o que pode ser feito, aqui pelo fórum fica muito lenta a comunicação, depois que chegarmos a um resultado colocamos aqui a solução, ok?
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Importar TXT sem delimitador
uma possibilidade, veja se atende:
Código: Selecionar todos
Sub Ler_Txt_FSO()
'E Necessario registrar a biblioteca "Microsoft Script RunTime"
Dim FSO As FileSystemObject
Dim TS As TextStream
Dim Texto As String
Dim NomeArquivo As String
Dim L As Integer
NomeArquivo = ThisWorkbook.Path & "\" & "Arquivo.txt"
L = 2
Set FSO = New FileSystemObject
Set TS = FSO.OpenTextFile(NomeArquivo, ForReading)
Sheets("Teste").Range("A2:J8000").ClearContents
Do Until TS.AtEndOfStream
Texto = TS.ReadLine
If VBA.IsDate(VBA.Left(Texto, 10)) Then
Texto = WorksheetFunction.Clean(LTrim(Texto))
Cells(L, 1).Value = CDate(VBA.Trim(VBA.Left(Texto, 11)))
Cells(L, 2).Value = VBA.Trim(Mid(Texto, 12, 11))
Cells(L, 3).Value = VBA.Trim(Mid(Texto, 23, 11))
Cells(L, 4).Value = VBA.Trim(Mid(Texto, 34, 6))
Cells(L, 5).Value = VBA.Trim(Mid(Texto, 40, 7))
Cells(L, 6).Value = VBA.Trim(Mid(Texto, 47, 7))
Cells(L, 7).Value = VBA.Trim(Mid(Texto, 54, 9))
Cells(L, 8).Value = VBA.Trim(Mid(Texto, 63, 11))
If IsDate(VBA.Replace(Mid(Texto, 74, 12), Chr(32), "")) Then Cells(L, 9).Value = CDate(VBA.Replace(Mid(Texto, 74, 12), Chr(32), ""))
Cells(L, 10).Value = Mid(Texto, 86, 15)
L = L + 1
End If
Loop
TS.Close
contRegistros = L - 1
MsgBox ("Importação concluída! Foram importados " & contRegistros & " Registros."), vbInformation
End Sub
Editado pela última vez por Reinaldo em Qua Jun 05, 2019 10:48 am, em um total de 1 vez.
Re: Importar TXT sem delimitador
Bom dia Narsi e demais!
Em qual pasta o arquivo "Arquivo.txt" deve ficar, para o excel localizá-lo e fazer a importação? Tentei fazer o teste aqui, mas aparece a mensagem dizendo que o arquivo não foi localizado.
Abraços!
Em qual pasta o arquivo "Arquivo.txt" deve ficar, para o excel localizá-lo e fazer a importação? Tentei fazer o teste aqui, mas aparece a mensagem dizendo que o arquivo não foi localizado.
Abraços!
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Importar TXT sem delimitador
A linha -->NomeArquivo = ThisWorkbook.Path & "\" & "Arquivo.txt"<-- determina o nome e local onde o arquivo txt está "hospedado"
Nesse exemplo -->ThisWorkbook.Path<-- determina ser o mesmo diretorio onde está a planilha excel
Nesse exemplo -->ThisWorkbook.Path<-- determina ser o mesmo diretorio onde está a planilha excel
Re: Importar TXT sem delimitador
Reinaldo, primeiramente peço desculpas pela demora em responder sobre sua ajuda, mas tive um problema de saúde na família que me ocupou por um longo período e tive que "abandonar" este projeto. Agora consegui retomar e testei a sua sugestão, que funcionou perfeitamente neste arquivo de teste.
Ocorre que, quando implementei a mesma funcionalidade no arquivo completo, não sei porque motivo, fica rodando o tempo todo e nunca completa a importação, me levando a forçar o fechamento da planilha pelo Gerenciador de Tarefas.
Esta planilha é uma ferramenta que desenvolvi para um Consórcio de Saúde de minha região, onde eu importo os empenhos e pagamentos realizados e gero um Balancete mensal para cada cidade consorciada, de acordo com uma tabela com percentuais cadastrados previamente. Mas como eu disse, funcionou na planilha de teste, mas na planilha completa fica processando e não conclui.
Já tentei de tudo para fazer funcionar, mas estou com dificuldade em conseguir, haja vista que sou somente um curioso neste assunto e fiz esta planilha com uma mistura de fórmulas diretas no excel e algumas coisas em vba.
Caso tenha disponibilidade em me ajudar com isso, posso mandar a planilha oficial no seu email.
Desde já agradeço.
Ocorre que, quando implementei a mesma funcionalidade no arquivo completo, não sei porque motivo, fica rodando o tempo todo e nunca completa a importação, me levando a forçar o fechamento da planilha pelo Gerenciador de Tarefas.
Esta planilha é uma ferramenta que desenvolvi para um Consórcio de Saúde de minha região, onde eu importo os empenhos e pagamentos realizados e gero um Balancete mensal para cada cidade consorciada, de acordo com uma tabela com percentuais cadastrados previamente. Mas como eu disse, funcionou na planilha de teste, mas na planilha completa fica processando e não conclui.
Já tentei de tudo para fazer funcionar, mas estou com dificuldade em conseguir, haja vista que sou somente um curioso neste assunto e fiz esta planilha com uma mistura de fórmulas diretas no excel e algumas coisas em vba.
Caso tenha disponibilidade em me ajudar com isso, posso mandar a planilha oficial no seu email.
Desde já agradeço.
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Importar TXT sem delimitador
Boa tarde; sem garantia de prazo e resultado , posso tentar ajudar a entender/resolver o que ocorre . Se puder ser assim; coloque seu arquivo em um compartilhador de arquivos tipo Google Drive / Dropbox /etc.. e mande o link via mensagem privada aqui o fórum mesmo