Notifications
Clear all

Unificar vários arquivos (excel) em uma única planilha

11 Posts
2 Usuários
0 Reactions
2,265 Visualizações
(@pedrohgc)
Posts: 5
Active Member
Topic starter
 

Bom dia, Pessoal!

Eu tenho uma pasta com várias planilhas em Excel (quase 10000), com o mesmo conteúdo, e gostaria de alguma rotina de VBA para unificar o conteúdo delas em uma única planilha. Lembrando que essa pasta é frequentemente complementada, ou seja, sempre são inseridos novos arquivos.

Se não for pedir demais, necessito apenas de uma parte de cada arquivo. Como o conteúdo é padrão, a informação que preciso de cada uma sempre inicia e termina na mesma célula/coluna.

Fazer esse trabalho manualmente é muito cansativo e toma muito tempo.

Daí preciso da ajuda de vocês desenvolver essa rotina, visto que estou começando a pesquisar sobre lógica de programação e VBA agora, e meu conhecimento acerca destas ferramentas mais elaboradas não é o suficiente.

Desde, já, agradeço qualquer ajuda que possam me dar.
Abraço!

 
Postado : 26/02/2013 8:28 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Vou mover seu tópico para um local correto!!
Poste seu arquivo compactado!!
Lembre se de usar a Pesquisa e a Biblioteca do fórum!!
Att

 
Postado : 26/02/2013 9:01 am
(@pedrohgc)
Posts: 5
Active Member
Topic starter
 

Obrigado alexandrevba!
Postarei no lugar correto da próxima vez. Valeu pela dica.

Estou pesquisando, mas ainda não encontrei aqui no fórum, nem em outros. Por isso recorri à ajuda de vocês.
Caso saibas o link da publicação que trata sobre minha dúvida e possas informar, ficarei grato.

Abraço.

 
Postado : 26/02/2013 12:07 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Tente mais, aproveite e poste seu arquivo modelo compactado!!

Att

 
Postado : 26/02/2013 12:20 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja em:
http://www.planilhando.com.br/vie ... =25&t=2501
viewtopic.php?f=10&t=4878&hilit=consolidar&start=10
e o exemplo anexo; tente utilizar/adaptar, caso não consiga poste um exemplo de como é e como deseja que fique (faça manualmente)

 
Postado : 26/02/2013 12:23 pm
(@pedrohgc)
Posts: 5
Active Member
Topic starter
 

Bom dia, Reinaldo!

Tentei utilizar o comando que foi disponibilizado no tópico fórum que você informou e não rodou. Assim como, tentei utilizar a planilha de exemplo e também não rodou. O problema é que tenho vários arquivos, quase 900 (sendo que esse número só aumenta), e quero que eles fiquem em uma única aba de um outro arquivo só para isso.

Segue anexo modelo dos arquivos que possuo e do arquivo 'RDO's Consolidados", no qual quero que contenha todos os dados dos demais arquivos.

À medida que vão chegando mais arquivos, vou colocando-os em uma mesma pasta no C:, daí preciso que essa rotina ao ser rodada atualize automaticamente o arquivo que contém a planilha .

Agradeço a ajuda.

 
Postado : 27/02/2013 7:15 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pergunta:
Os dados a serem consolidados, estarão sempre na range A20:N138 ? ou podem ser diferenciados (a mais ou a menos)

 
Postado : 27/02/2013 10:42 am
(@pedrohgc)
Posts: 5
Active Member
Topic starter
 

Estarão sempre nesta range, Reinaldo.

Obrigado.

 
Postado : 27/02/2013 11:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ola Segue um codigo para você adaptar troque os nomes das planilhas e celulas:

Sub Pesquisar()
Dim sDir As String, sPath As String, R As Long

    
'começando na ultima linhavazia da planilha
R = Sheets("2013").Cells(Rows.Count, 1).End(xlUp).Row + 1 'Altere o nome da planilha que ira receber os dados


'Path (Diretorio) -colocar esta planilha fora da pasta que sera feito a pesquisa dos orçamentos
sPath = ThisWorkbook.Path & "1 Orcamento Usinagem Externa" ' nome da pasta aonde você ira colocar todas as planilhas a serem pesquisadas
'Acrescenta a "" se necessario
If Right(sPath, 1) <> "" Then
    sPath = sPath & ""
    Else
    sPath = sPath
End If
'altera temporariamente o diretorio de trabalho
ChDir sPath
'Procura por qq arquivo que tenha "xlsm" na extensão
sDir = Dir("*.xlsm")
'Executa enquanto encontrar algum arquivo
Do While sDir <> ""
    'Verifica se o nome encontrado não é o da planilha ativa
    If sDir <> ThisWorkbook.Name Then
 
'Lê eColoca o Valor na Celula
    Sheets("2013").Cells(R, 1).Formula = GetInfoFromClosedFile(sPath, sDir, "Fornecedor", "B5") 'nome da planilha que estão os seus dados e a linha que deseja copiar
    Sheets("2013").Cells(R, 2).Formula = GetInfoFromClosedFile(sPath, sDir, "Fornecedor", "B3")
    Sheets("2013").Cells(R, 6).Formula = GetInfoFromClosedFile(sPath, sDir, "Fornecedor", "B4")
    Sheets("2013").Cells(R, 7).Formula = GetInfoFromClosedFile(sPath, sDir, "Fornecedor", "D3")
   
    sDir = Dir
    End If
R = R + 1
Loop

'trata uma possivel tentativa de excluir planilhas quando a pasta estiver vazia
On Error GoTo Trata_Erro

'deletar planilhas apos copiar dados
'Kill ("*.xlsm")

Exit Sub
Trata_Erro:
MsgBox "A pasta Esta Vazia" & Chr(13) & "Ja foram IMPORTADOS todos os Valores.", 48, "Problemas Ligue: 99951565"


 
End Sub


Private Function GetInfoFromClosedFile(ByVal wbPath As String, wbName As String, wsName As String, cellRef As String) As Variant

Dim arg As String
GetInfoFromClosedFile = ""

If Right(wbPath, 1) <> "" Then wbPath = wbPath & ""

arg = "'" & wbPath & "[" & wbName & "]" & _
wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)

On Error Resume Next
GetInfoFromClosedFile = ExecuteExcel4Macro(arg)

End Function

 
Postado : 27/02/2013 1:01 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Alem do bom codigo disponibilizado pelo colega Geroane (somente cuidado se não quiser deletar os arquivos depois de consolidados,a instrução "Kill" faz isso)
Segue uma outra opção.

 
Postado : 27/02/2013 1:44 pm
(@pedrohgc)
Posts: 5
Active Member
Topic starter
 

Reinaldo e Geroeane,

Agradeço muito a contribuição de vocês!!
Primeiramente rodei o código enviado pelo Reinaldo, para não correr o risco de excluir os arquivos, e atendeu plenamente ao que eu queria! Muito Obrigado!!

Em relação ao enviado por Geroeane, será muito útil também em outro controle que estou desenvolvendo, onde os arquivos não precisarão permanecer na pasta, logo, poderão ser excluídos, então veio a calhar também.

Por isso, muito obrigado aos dois!

 
Postado : 28/02/2013 6:10 am