Notifications
Clear all

Código para importar arquivos diários com data (numerado)

7 Posts
2 Usuários
0 Reactions
1,168 Visualizações
(@saintclairtgs)
Posts: 5
Active Member
Topic starter
 

Olá pessoal,
Vejam se conseguem me tirar essa dúvida...

Preciso importar todos os dias um arquivo txt para o excel para poder realizar algumas análises. Esses arquivos txt são nomeados com a data do dia, exemplo:
arquivo_020115 (referente ao dia 02 de janeiro de 2015),
arquivo_060115 (referente ao dia 06 de janeiro de 2015).

Pelo código que eu criei não consigo alternar os dias para que possa importar automaticamente todos os dias.

Existe alguma forma de citar um diretório para importar arquivos diariamente onde um trecho do nome do arquivo possa ser alterado de acordo com o dia ou de acordo com alguma listagem?
Talvez usando concatenação....

 
Postado : 15/01/2015 12:50 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pode-se por exemplo em uma celula da planilha inidicar o caminho e nome e uma variavel "assumir" esse caminho
Seria algo +/- assim
ArqPath = Sheets("Plan1").Range("c4").Value
e na rotina importação +/- assim --> Workbooks.OpenText Filename:=ArqPath

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 15/01/2015 1:23 pm
(@saintclairtgs)
Posts: 5
Active Member
Topic starter
 

Reinaldo

Preciso declarar essa variável com o comando Dim?

Tem como você informar como ficaria o código completo?

 
Postado : 15/01/2015 3:14 pm
(@saintclairtgs)
Posts: 5
Active Member
Topic starter
 

Reinaldo obrigado pela orientação já consegui algo ...

Utilizei esse código:

Sub diretorio()

Dim arquivo As String
arquivo = Worksheets("Plan2").Range("j2").Value
Workbooks.OpenText Filename:=arquivo

End Sub

Mas está abrindo um novo arquivo com os dados importados. Quero adaptar esse código para que ele abra os dados importados na planilha ativa, alguém consegue?
Obrigado

 
Postado : 15/01/2015 4:31 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pelo que entendi, você já possui o código para a importação, passei apenas um exemplo de uma maneira de passar uma descrição/nome a uma variável para que adapta-se ao seu modelo.
Mande seu modelo de planilha aqui no fórum, com a rotina que está utilizando assim será mais fácil obter um retorno satisfatório.

Quanto a pergunta "Preciso declarar essa variável com o comando Dim?"
Não há obrigatoriedade, porem é uma boa pratica a declarar, corretamente , todas as variaveis em uso

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 15/01/2015 6:44 pm
(@saintclairtgs)
Posts: 5
Active Member
Topic starter
 

Reinaldo, eu não possuo o código o que criei foi totalmente baseado no seu exemplo.
Para ficar perfeito só falta a codificação para que o destino dos dados importados seja a planilha ativa.

 
Postado : 15/01/2015 8:03 pm
(@saintclairtgs)
Posts: 5
Active Member
Topic starter
 

Reinaldo,
De acordo com o exemplo que você me deu eu consegui chegar numa solução bacana:

Espero conseguir explicar de forma didática:

Sub ImportaRelatorio()

Dim relatorio As String
'Delcaração da variável

Dim nomearquivo As String
'Delcaração da variável da nova janela ativa

Dim nomearquivosalvo As String
'Delcaração da variável que será o nome do arquivo a ser salvo

relatorio = Worksheets("Plan1").Range("B3").Value
'Informando que o valor da variável relatório é igual ao valor da célula B3

nomearquivo = Worksheets("Plan1").Range("B4").Value
'Informando que o valor da variável nomearquivo é igual ao valor da célula B4

nomearquivosalvo = Worksheets("Plan1").Range("B5").Value
'informando que o valor da variável nomearquivosalvo é igual ao valor da célula B5

Workbooks.OpenText Filename:=relatorio
'Importa o arquivo selecionado para um nova planilha

ActiveWindow.DisplayGridlines = False
'Linhas de grade desativada

Columns("C:C").NumberFormat = "0"
Columns("E:E").NumberFormat = "0"
Columns("F:F").NumberFormat = "0"
'Formata as colunas para que não tenha casa decimal após a vírgula

Range("A4:J4").Font.Bold = True
'Formata os cabeçalhos em negrtio

Windows(nomearquivo).Activate
ActiveWorkbook.SaveAs Filename:= _
nomearquivosalvo _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
'Salva o arquivo com o nome informado na variável e salva no destino informado na variável

Columns("H:H").AutoFit
Columns("J:J").AutoFit
'Ajusta as colunas automaticamente de acordo com o conteúdo

Range("a1").Select
'Seleciona a célula A1

ActiveWorkbook.Save
'Salva o arquivo com as últimas alterações

End Sub

 
Postado : 16/01/2015 3:17 pm