Macro para importar diversos arquivos txt

Ir em baixo

Macro para importar diversos arquivos txt

Mensagem por Italo Campos em Ter Ago 12, 2014 10:55 pm

Olá pessoal!

Estou precisando de uma ajuda de vocês para desenvolver uma macro para importar vários arquivos txt nas seguintes condições:

1 - Os arquivos são gerados numa mesma pasta no formato txt;
2 - É gerado 1 arquivo por dia com a nomenclatura aaaammdd.txt
3 - A macro deve funcionar quando o usuário der o clicar em um botão e importar o txt dos últimos 30 dias.

Já li alguns posts aqui com assuntos parecidos mas que não estão funcionando. Fico muito grato com ajuda!

Italo Campos
Iniciante
Iniciante

Mensagens : 6
Data de inscrição : 12/08/2014

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Macro para importar diversos arquivos txt

Mensagem por alexandrevba em Qui Ago 14, 2014 8:01 am

Bom dia!!

Vai ficar um pouco complicado adivinhar o que você quer, temos que ver e encontrar um certo padrão para isso, do contrário sua dúvida é generica e por isso eu posso responder como tal.
Código:
Sub teste()
    Dim myDir As String, fn As String, txt As String, i As Long
    Dim n As Long, t As Long, matches As Object, m As Object
    myDir =  "C:\Users\alexandre\Downloads"
    fn = Dir(myDir & "*.log"): t = 1
    With CreateObject("VBScript.RegExp")
        .Global = True
        Do While fn <> ""
            txt = CreateObject("Scripting.FileSystemObject") _
            .OpenTextFile(myDir & fn).ReadAll
            .Pattern = "[^\n]+"
            Set matches = .Execute(txt)
            Redim a(1 To matches.Count, 1 To 4)
            .Pattern = "([^;]+)(?:;)([^;]+(?:;)[^;]+)(?:;)([^:]+)(?:;)(.+)"
            n = 0
            For Each m In matches
                n = n + 1
                For i = 1 To 4
                    a(n, i) = .Replace(m.Value, "$" & i)
                Next
            Next
            With Sheets(1).Cells(t, 1)
                .Value = fn
                With .Offset(, 1).Resize(n, 4)
                    .NumberFormat = "@"
                    .Value = a
                End With
                .CurrentRegion.Columns.AutoFit
            End With
            t = t + n
            fn = Dir
        Loop
    End With
End Sub
Att


Última edição por alexandrevba em Sex Ago 15, 2014 9:37 am, editado 1 vez(es)
avatar
alexandrevba
Intermediário
Intermediário

Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Macro para importar diversos arquivos txt

Mensagem por Italo Campos em Qui Ago 14, 2014 3:03 pm

Alexandre, obrigado pela ajuda.

Deixa eu explicar melhor então:

Tenho um programa que gera uma arquivo txt a cada dia com todos os alarmes de uma planta industrial. Este arquivo é sempre nomeado com a data do dia em questão, por exemplo, 20140814.txt (o de hoje).

Estes arquivos são salvos numa única pasta. A ideia é fazer uma macro que possa importar os arquivos do último mês no momento em que o usuário desejar.

Italo Campos
Iniciante
Iniciante

Mensagens : 6
Data de inscrição : 12/08/2014

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Macro para importar diversos arquivos txt

Mensagem por alexandrevba em Sex Ago 15, 2014 10:45 am

Bom dia!!

Em seu txt tem alguma coluna que tem data?

Att
avatar
alexandrevba
Intermediário
Intermediário

Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Macro para importar diversos arquivos txt

Mensagem por Italo Campos em Sex Ago 15, 2014 2:25 pm

Olá Alexandre, no txt tem data sim, o formato é assim:

Data Hora TAG Descrição
2013-08-04 00:00:10.573 WTP_C517 WTP: C517: Nivel baixo tanque retorno WTP

Tem mais 4 colunas que não tem muita importância.

A data é sempre fixa pois os arquivos são gerados uma vez por dia no início do dia, o que varia são os dados das outras colunas.

Italo Campos
Iniciante
Iniciante

Mensagens : 6
Data de inscrição : 12/08/2014

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Macro para importar diversos arquivos txt

Mensagem por alexandrevba em Sab Ago 16, 2014 8:41 am

Bom dia!!

Isso deve ajudar!
Código:
Sub AleVBA_167()

    Dim myDir As String, fn As String, txt As String, a(), n As Long, i As Long, ff As Integer
    myDir = "C:\Users\alexandre\Videos\" 'Nesta linha ponha o diretório onde se encontra os txt
    fn = Dir(myDir & "*" & Format$(Date, "yyyymm") & "*.txt")
    If fn = "" Then
        MsgBox "Arquivo não encontrado!": Exit Sub
    End If
    Do While fn <> ""
        ff = FreeFile
        Open myDir & "\" & fn For Input As #ff
        Do While Not EOF(ff)
            Line Input #ff, txt
            n = n + 1: ReDim Preserve a(1 To n)
            a(n) = Split(txt, vbTab)
        Loop
        Close #ff
        fn = Dir()
    Loop
    With ThisWorkbook.Sheets("Plan1").Range("A1") 'Mude o nome da guia Plan1 para sua guia real
        For i = 1 To n
            .Offset(i - 1).Resize(, UBound(a(i)) + 1).Value = a(i)
        Next
    End With
End Sub
avatar
alexandrevba
Intermediário
Intermediário

Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Macro para importar diversos arquivos txt

Mensagem por Italo Campos em Sab Ago 16, 2014 4:41 pm

Alexandre, consegui entender boa parte da sua macro com o conhecimento básico que tenho de C++ porém quando executo a macro sempre abre a box de arquivo não encontrado.

Fiz uma outra macro de importação com o gravador que mostra o diretório para te mostrar:
Código:

Sub Macro1()
'
' Macro1 Macro
''
   Range("F11").Select
   With ActiveSheet.QueryTables.Add(Connection:= _
       "TEXT;C:\Italo\gerdau\20130813.txt", Destination:=Range("$F$11"))
       .Name = "20130813"
       .FieldNames = True...
Quando uso o mesmo diretório (C:Italo\gerdau\) na sua macro abre o box.

O que acha que pode ser?

Italo Campos
Iniciante
Iniciante

Mensagens : 6
Data de inscrição : 12/08/2014

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Macro para importar diversos arquivos txt

Mensagem por alexandrevba em Sab Ago 16, 2014 8:54 pm

Boa noite!!

Eu tenho que saber se tem uma barra no final assim como está no meu código ( "C:\Users\alexandre\Videos\"), o meu não funciona sem a ultima barra.

Também tenho que saber se a guia está correta (ThisWorkbook.Sheets("Plan1"))

O código vai procurar dentro do diretório especificado, quais txt tem o mês atual e copiar para guia em questão!
Att
avatar
alexandrevba
Intermediário
Intermediário

Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Macro para importar diversos arquivos txt

Mensagem por Italo Campos em Seg Ago 18, 2014 11:43 am

Olá Alexandre!

Tanto o diretório quanto a a guia estão corretos. Testei com a barra e sem a barra no diretório. Tente mudar o diretório pra ver o que acontece aí na sua máquina.

Não cheguei nem a alterar o nome da guia pois estou usando uma planilha nova, a Plan1 mesmo.

Abraços!

Italo Campos
Iniciante
Iniciante

Mensagens : 6
Data de inscrição : 12/08/2014

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Macro para importar diversos arquivos txt

Mensagem por alexandrevba em Seg Ago 18, 2014 12:40 pm

Boa tarde!!

Eu realmente não sei o que há em seu caso, pois nos testes efetuas, todos deram positivo!


Att
avatar
alexandrevba
Intermediário
Intermediário

Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Macro para importar diversos arquivos txt

Mensagem por Italo Campos em Ter Ago 19, 2014 8:36 am

Alexandre, obrigado pela ajuda cara!! Assim que descobrir o que está acontecendo posto aqui.

Abraço!

Italo Campos
Iniciante
Iniciante

Mensagens : 6
Data de inscrição : 12/08/2014

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Macro para importar diversos arquivos txt

Mensagem por alexandrevba em Ter Ago 19, 2014 2:58 pm

Boa tarde!!

Verifique com atenção, depois retorne!!


Att
avatar
alexandrevba
Intermediário
Intermediário

Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Macro para importar diversos arquivos txt

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum