Esqueceu sua senha? Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

Importar TXT sem delimitador

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
narsi
Colaborador
Colaborador
Mensagens: 30
Registrado em: Qui Out 13, 2011 3:56 pm
Localização: Ipatinga / MG

Importar TXT sem delimitador

Mensagem por narsi » Sex Set 14, 2018 9:48 pm

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.
Anexos
Arquivo.rar
(1.5 KiB) Baixado 15 vezes



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
excelflex
Colaborador
Colaborador
Mensagens: 20
Registrado em: Sex Set 14, 2018 7:03 pm

Re: Importar TXT sem delimitador

Mensagem por excelflex » Sáb Set 15, 2018 12:00 am

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.


Tenho mais dicas de Excel em www.excelflex.com.br.
Se tiver interesse que um desenvolvedor executar esta tarefa para você, entre em contato comigo http://www.excelflex.com.br/#contato

Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1013
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Importar TXT sem delimitador

Mensagem por Reinaldo » Sáb Set 15, 2018 7:43 am

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


Reinaldo
Gostou da resposta?:?: :oops: :D :mrgreen:

narsi
Colaborador
Colaborador
Mensagens: 30
Registrado em: Qui Out 13, 2011 3:56 pm
Localização: Ipatinga / MG

Re: Importar TXT sem delimitador

Mensagem por narsi » Seg Set 17, 2018 8:30 pm

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.
Anexos
Arquivo Teste.rar
(27.93 KiB) Baixado 11 vezes



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
excelflex
Colaborador
Colaborador
Mensagens: 20
Registrado em: Sex Set 14, 2018 7:03 pm

Re: Importar TXT sem delimitador

Mensagem por excelflex » Seg Set 17, 2018 10:31 pm

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?


Tenho mais dicas de Excel em www.excelflex.com.br.
Se tiver interesse que um desenvolvedor executar esta tarefa para você, entre em contato comigo http://www.excelflex.com.br/#contato

Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1013
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Importar TXT sem delimitador

Mensagem por Reinaldo » Ter Set 18, 2018 8:11 am

uma possibilidade, veja se atende:
Arquivo Teste.zip
(29.26 KiB) Baixado 10 vezes

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[/codel]


Reinaldo
Gostou da resposta?:?: :oops: :D :mrgreen:

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder