Macro para importar diversos arquivos txt
2 participantes
Página 1 de 1
Macro para importar diversos arquivos txt
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!
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
- Mensagens : 6
Data de inscrição : 12/08/2014
Re: Macro para importar diversos arquivos txt
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.
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
Última edição por alexandrevba em Sex Ago 15, 2014 9:37 am, editado 1 vez(es)
alexandrevba- Intermediário
- Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES
Re: Macro para importar diversos arquivos txt
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.
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
- Mensagens : 6
Data de inscrição : 12/08/2014
Re: Macro para importar diversos arquivos txt
Bom dia!!
Em seu txt tem alguma coluna que tem data?
Att
Em seu txt tem alguma coluna que tem data?
Att
alexandrevba- Intermediário
- Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES
Re: Macro para importar diversos arquivos txt
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.
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
- Mensagens : 6
Data de inscrição : 12/08/2014
Re: Macro para importar diversos arquivos txt
Bom dia!!
Isso deve ajudar!
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
alexandrevba- Intermediário
- Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES
Re: Macro para importar diversos arquivos txt
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:
O que acha que pode ser?
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...
O que acha que pode ser?
Italo Campos- Iniciante
- Mensagens : 6
Data de inscrição : 12/08/2014
Re: Macro para importar diversos arquivos txt
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
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
alexandrevba- Intermediário
- Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES
Re: Macro para importar diversos arquivos txt
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!
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
- Mensagens : 6
Data de inscrição : 12/08/2014
Re: Macro para importar diversos arquivos txt
Boa tarde!!
Eu realmente não sei o que há em seu caso, pois nos testes efetuas, todos deram positivo!
Att
Eu realmente não sei o que há em seu caso, pois nos testes efetuas, todos deram positivo!
Att
alexandrevba- Intermediário
- Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES
Re: Macro para importar diversos arquivos txt
Alexandre, obrigado pela ajuda cara!! Assim que descobrir o que está acontecendo posto aqui.
Abraço!
Abraço!
Italo Campos- Iniciante
- Mensagens : 6
Data de inscrição : 12/08/2014
Re: Macro para importar diversos arquivos txt
Boa tarde!!
Verifique com atenção, depois retorne!!
Att
Verifique com atenção, depois retorne!!
Att
alexandrevba- Intermediário
- Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES
Tópicos semelhantes
» Loop para importar arquivos .txt
» Macro importar arquivo .txt
» Importar arquivo CSV para excel com critério.
» Copiar dados de vários arquivos para uma única planilha
» Macro para conferir duas colunas
» Macro importar arquivo .txt
» Importar arquivo CSV para excel com critério.
» Copiar dados de vários arquivos para uma única planilha
» Macro para conferir duas colunas
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|