Tabela price Excel capa - Guia do Excel
Tabela Price com carência no Excel
26 de março de 2018
Ler comentários com VBA capa - Guia de Excel
Agilizar leitura de comentários no Excel
7 de abril de 2018

Juntar planilhas Excel em uma só

Uma solução para juntar planilhas em uma só, com ela você poderá consolidar planilhas Excel com VBA, fazendo com que os dados de todas as planilhas sejam colocados em apenas uma. Planilhas Excel VBA.

Um problema recorrente que vejo nas empresas é a necessidade de unir várias planilhas Excel em uma só.

Isso acontece por inúmeros motivos, como por exemplo unir as planilhas que foram preenchidas em várias filiais, ou unir os dados de relatórios de vendas de vários vendedores ou de uma fonte de dados que você localizou na internet, etc.

A boa notícia é que você poderá fazer isso com apenas um clique usando este simples tutorial.

Caso você não queira fazer todo o passo-a-passo você pode fazer o download e usar o artigo para entender o que foi feito. Neste caso vá diretamente para Juntar planilhas Excel em uma só.

Habilitar a guia Desenvolvedor

Para juntar as planilhas em uma só o primeiro passo é habilitar a guia Desenvolvedor do Excel, pois iremos usar um código VBA para realizar esta tarefa.

Siga os passos abaixo caso não tenha esta guia habilitada, ou siga para o próximo tópico caso já tenha ela.

  1. Verifique se você já possui a guia Desenvolvedor habilitada, conforme imagem abaixo:Juntar planilhas Excel em uma só 2
  2. Caso ela não esteja habilitada, clique com o botão direito sobre qualquer parte cinza da faixa de opções e clique na opção Personalizar a Faixa de Opções.
  3. A opção marcada já será Personalizar Faixa de Opções, então em Guias Principais selecione Desenvolvedor.Habilitar guia desenvolvedor Excel

Copiando o código para consolidar planilhas

  Nesta etapa você irá copiar e colar o código fonte na planilha aonde você quiser consolidar os dados das outras planilhas.

  Este código fonte faz a busca por todas as pastas de trabalho, arquivos Excel, que houverem na pasta que você selecionar e abre cada uma das planilhas e as une, independente da quantidade de colunas e linhas inclusive.

  1. Abra um novo arquivo Excel, pode pressionar CTRL+o para isso.
  2. Clique na guia Desenvolvedor e no botão Visual Basic, é o primeiro botão da guia.
  3. Na tela que segue clique em Inserir->Módulo. Importante, veja se você está na pasta de trabalho correta.Juntar planilhas Excel em uma só 4
  4. Clique duas vezes no Módulo1 que foi criado e cole o código abaixo:
'UnificarPlanilhas Macro
Sub lsUnificarPlanilhas()
    On Error GoTo Sair

  Dim lUltimaColunaAtiva As Long
  Dim lUltimaLinhaAtiva As Long
  Dim lRng As Range
  Dim sPath As String
  Dim fName As String
  Dim lNomeWB As String
  Dim lIPlan As Integer
  Dim lUltimaLinhaPlanDestino As Long
   
  PlanilhaDestino = ThisWorkbook.Name
 
  sPath = Localizar_Caminho
 
  sName = Dir(sPath & "\*.xl*")
 
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlCalculationManual
   
  Do While sName <> ""
        fName = sPath & "\" & sName
        Workbooks.Open Filename:=fName, UpdateLinks:=False
        
        lNomeWB = ActiveWorkbook.Name
        
        For lIPlan = 1 To ActiveWorkbook.Sheets.Count
            Workbooks(lNomeWB).Worksheets(lIPlan).Activate
        
            lUltimaLinhaAtiva = Cells(Rows.Count, 1).End(xlUp).Row
            lUltimaColunaAtiva = ActiveSheet.Cells(1, 5000).End(xlToLeft).Column
            
            Set lRng = Range(Cells(1, lUltimaColunaAtiva).Address)
            
            Range("A" & 1 & ":" & gfLetraColuna(lRng) & lUltimaLinhaAtiva).Select
            Selection.Copy
            
            Workbooks(PlanilhaDestino).Worksheets(1).Activate
            
            lUltimaLinhaPlanDestino = Cells(Rows.Count, 1).End(xlUp).Row
            
            If lUltimaLinhaPlanDestino > 1 Then
                lUltimaLinhaPlanDestino = Cells(Rows.Count, 1).End(xlUp).Row + 1
            End If
            
            Range("A" & lUltimaLinhaPlanDestino).Select
            
            ActiveSheet.Paste
            Application.CutCopyMode = False
        Next lIPlan
        
        Workbooks(lNomeWB).Close SaveChanges:=False
        sName = Dir()
  Loop
  
  MsgBox "Planilhas unificadas!"

Sair:
  Application.ScreenUpdating = True
  Application.EnableEvents = True
  Application.Calculation = xlCalculationAutomatic
End Sub

Function gfLetraColuna(ByVal rng As Range) As String
    Dim lTexto() As String
    
    lTexto = Split(rng.Address, "$")
    
    gfLetraColuna = lTexto(1)
End Function

Public Function Localizar_Caminho() As String

    Dim strCaminho As String
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        
        'Permitir mais de uma pasta
        .AllowMultiSelect = False
        
        'Mostrar janela
        .Show
        
        If .SelectedItems.Count > 0 Then
            strCaminho = .SelectedItems(1)
        End If
    
    End With
    
    'Atribuir caminho a variável
    Localizar_Caminho = strCaminho

End Function

5. Feche o VBA

6. Salve o seu arquivo como Pasta de trabalho Habilitada para Macro do Excel.

Juntar planilhas Excel em uma Só

  Agora iremos testar a aplicação, você pode usar o seu arquivo que acabou de criar ou fazer o download da planilha pronta e seguir o passo-a-passo seguinte.

  1. Descompacte o arquivo do download e extraia para um lugar no seu computador.
  2. Há um arquivo que é o Planilha teste unificar e a pasta Planilhas a unir. O arquivo é o arquivo que receberá os dados das pastas de trabalhos e a pasta Planilhas a unir são as pastas de trabalho que desejamos juntar.
  3. Clique na guia Desenvolvedor->Macros e na tela seguinte selecione lsUnificarPlanilhas esta macro irá usar o VBA para juntar vários arquivos Excel.
  4. Clique no botão Executar
  5. Na tela que segue selecione o local aonde estão suas pastas de trabalho a unir, no  nosso caso é a pasta Planilhas a unir. Nela temos vários arquivos com tamanhos diferentes e que serão unidos rapidamente pelo Excel.Juntar planilhas Excel em uma só
  6. Pronto, todos os dados foram unidos. No caso do nosso exemplo temos informações até a coluna S nos arquivos da pasta, mas o Excel irá juntar as planilhas independente da quantidade de colunas que cada arquivo tiver.
  7. Caso você tenha penas um arquivo com várias planilhas o processo é o mesmo, apenas selecione a pasta aonde o mesmo está e processe o código VBA para unir todas as planilhas em uma só.

Veja mais neste artigo [Excel] Auto completar e lista automática – Planilha de Promoções

Abraço

Marcos Rieper

55 Comments

  1. Eloilson dos Anjos Rocha disse:

    Show de bola essa macro, mais quando eu quero copiar apenas a plan1 de cada pasta de trabalho, onde eu modifico o código para minha realidade, desde já obrigado!

  2. Benedito Jaciel de Castro disse:

    Gostei muito da sua planilha. Copiei o VBA colei em uma nova planilha. Salvei o arquivo como Pasta de trabalho Habilitada para Macro do Excel. Unifiquei a planilha com os seus arquivos e deu tudo certo. Porém as minhas duas planilhas fazendo a unificação retorna com uma coluna só. Gostaria muito de trocar uma ideia com você porque não deu certo. As duas planilhas que tenho, todas contém formulas. Aguardo uma resposta. Muito Obrigado.

    • HALLITON disse:

      Olá, não sei se você já resolveu o problema, mas tinha esse mesmo problema consegui resolver alterando a extensão do arquivo de .csv para .xlsx

  3. Wilson disse:

    Fiz isso com minhas planilhas, ele copiou somente as duas primeiras colunas, não me adiantou muita coisa, alguém sabe porque?

  4. Cristiane disse:

    Eu gostaria muito da ajuda para fazer a macro com algumas bases que tenho, essas bases tem varias linhas antes do cabeçalho que preciso copiar de todas as macros que eu vi ate agora nenhuma tem para este padrão que eu preciso.

  5. Veber S. B. Tenorio disse:

    Obrigado pela dica! Super simples e alto impacto na atividade. Parabens!

  6. Andre disse:

    Boa tarde Marco muito obrigado desde ja por partilhar tamanho conhecimento com todos nos
    Gostaria de saber se ha forma de juntar folhas tabelas excel numa so tabela com varias planilhas

    ou seja tenho 130 folhas excel e tenho de abrir uma a uma , mas a ideia e de colocar todas numa so folha mas separadas por varias janelas

    obrigado

  7. Anselmo disse:

    Olá Marcos,

    Muito obrigado pela ajuda! Parabéns!

    A quantidade de planilhas que estou juntando ultrapassa o limite de 1.048.576 linhas do excel. Teria algum modo de fazer esse junção para gerar uma planilha com um número maior de linhas do que o limite do excel?

  8. LEONARDO disse:

    Aparentemente eu desconfigurei alguma funcionalidade… ao executar a macro, só funciona para o primeiro arquivo da pasta de trabalho e só para 2 planilhas do arquivo (o arquivo tem 7 abas). Alguém saberia como resolver isso ?

  9. CAROLINA PEREIRA KECHINSKI disse:

    ALGUM MOTIVO PARA ELE JUNTAR SOMENTE 15 PLANILHAS COM 23MIL LINHAS? EU TENHO UMAS 30 PLANILHAS PARA JUNTAR…

  10. ADILSON LEONARDO DOMINGUES disse:

    Boa Noite Marcos Rieper !!! Meus parabéns por esta post e planilha modelo, eu nem imaginava que isto seria possível juntas as planilhas em uma só com uma macro no excel, me ajudou e agilizou muito muito meu serviço e me fez interessar ainda mais pelo Excel. Minha planilhas vem com a Coluna A em branco, para que a macro funcione preciso abrir e excluir a coluna A, seria possível modificar a macro para começar a copiar as planilhas a partir da coluna B ? O que é necessário alterar para que funcione na coluna B ?

    • Marcos Rieper disse:

      Obrigado Adilson. Altere nesta linha Range(“A” & 1 & “:” & gfLetraColuna(lRng) & lUltimaLinhaAtiva).Select para “B” ao invés de “A”

      • Tiago disse:

        E se começar a contar na coluna A linha 2 ficaria assim? Range (“A” & 2 & “:” & gfLetraColuna(lRng) & lUltimaLinhaAtiva). Desde já muito obrigado!

  11. Rodrigo Adriano disse:

    Boa tarde. Eu tentei com minha planilha mas ele só abre a primeira planilha. O que pode ser ?

  12. Diego disse:

    Olá , Marcos

    Essa macro será muito útil na minha atividades, porém quando eu quero copiar apenas a plan1 de cada pasta de trabalho, onde eu modifico o código para minha realidade ?

  13. Guilherme Mamede disse:

    Olá Marcos,

    É possível selecionar apenas algumas células das planilhas que quero unificar, ou seja, sem a necessidade juntar TODOS os dados da planilha? Por exemplo, quero reunir em uma única planilha apenas os dados das células A2 de cada arquivo Excel, referentes à Planilha1 de cada arquivo.
    Se puder me ajudar, serei muito grato!
    Abraços.

  14. Israel disse:

    Olá Marcos, boa tarde.

    Marcos, até agora seus vídeos foram os melhores, mas estou com um problema. Tenho várias lista em excel, mas todas com formatos diferentes, tanto na escrita como no tamanho das células, nas cores. Fiz esse procedimento e não deu certo. Qual o caminho mais fácil. Muito obrigado pelas dicas.. Parabéns

  15. Lenilton disse:

    Muito bom, funcionou perfeitamente!!! Obrigado.

  16. fernando disse:

    Oi, adorei a sua dica. Gostaria de saber se tem como inseri na primeira coluna o respectivo nome de cada arquivo.

  17. Paulo disse:

    Marcos, boa tarde!
    Muito bom seu macro, obrigado por compartilhar.

    Encontrei uma dificuldade, estou tentando juntar 180 planilhas que foram exportadas de um sistema mas elas estão em .xls (97-2003) e o macro não completa a união delas, abre a primeira planilha e já para.
    Percebi que salvando como .xlsx o macro consegue completar a tarefa sem problemas, no entanto não queria abrir todos os arquivos para salva-los novamente.
    Tem alguma alteração que pode solucionar este problema?

    Muito obrigado desde já!

  18. Rafael disse:

    Não consegui. No seu vídeo ele fez as colunas e linhas automático. Fiz de acordo com o que ensinou, mas n funcionou do mesmo jeito. Veio tudo em única coluna com várias linhas e não puxou o todos os dados em todas as linhas e colunas quando transformei de texto para coluna. Pode ajudar?

  19. Samuel disse:

    Olá, gostaria de saber se você já criou esse método para unificar dados de vários planos (Ex: plan1, plan2 plan3… ) em um único plano na mesma planilha.

    Muito obrigado por compartilhar seu conhecimento!

    Que Deus o abençoe sempre.

  20. Danilo Saraiva Bonamin disse:

    Olá, Marcos,

    Existe uma possibilidade de consolidar uma série de pastas de trabalho em uma pasta, mas de forma que as planilhas sejam mantidas? Por exemplo: Uma pasta com 14 planilhas foi preenchida por varias pessoas em arquivos diferentes e deve-se juntar tudo em apenas uma pasta, mas respeitando o número de planilhas.

  21. Gabriel disse:

    Parabéns pelo trabalho Marcos! Gostaria apenas de uma ajuda. Depois de ter gerado a planilha unificada, daria para criar um outro código para inserir uma coluna em que nela consta o nome do arquivo original em cada linha? Se puder ajudar, ficarei grato! abs.

  22. Mauro Capitani disse:

    Sensacional, muito obrigado. Eu tenho planilhas de atendimento para cada consultor que inserem uma linha para cada cliente atendido, e para compilar isso dava muito trabalho. Agora esse código faz isso, apesar de ele copiar também as 2 primeiras linhas que são o enunciado e o nome das colunas e inserir muitas linhas vazias, mas já ajudou bastante.

  23. jorge luis disse:

    queria que quando fosso unificando a plan, eu pudesse fazer adicionar uma coluna no lado me falando de quando era a plan salva]

  24. Renan disse:

    Boa Tarde, funcionou. muito Bom.

    Mas como eu faço se eu só quero unificar uma planilha (planilha de mesmo nome de uma seria de pastas de trabalho)?

  25. Airton Coutinho Neto disse:

    Boa tarde!

    Considerando que todas as planilhas tem cabeçalho, como conseguiria puxar apenas os dados contidos da segunda linha em diante?
    Excelente material!

  26. Aline disse:

    Oii! Bom dia!
    Tentei aqui e não deu certo, só puxa os dados de uma planilha apenas.
    Poderia me ajudar?

  27. Jeronimo Hillesheim disse:

    Boa noite Marcos,
    Parabéns pela postagem, ganhou um joinha e um seguidor no Youtube, vou passar a acompanhar suas postagens, me ajudou muito essa aula. Agora para ficar perfeito, preciso saber como ativar a opção Atualizar dados, pois as planilhas que estou unindo sofrem atualizações constantemente, a única forma que consegui foi excluir a planilha unificada e executar o macro novamente depois de editar as planilhas de origem.

  28. Carolina disse:

    Marcos achei ótimo vai ser muito útil para meu serviço, gostaria de saber como limitar o as linhas selecionadas para começar e terminar?
    Grata

  29. Amanda disse:

    Olá Marcos,

    Obrigada por compartilhar essa solução =D
    Fiz o teste e consegui unificar as planilhas, mas quando fui aplicar a uma situação real para consolidar vários arquivos referentes a meses diferentes, só trouxe o primeiro arquivo.
    Os arquivos estão nomeados seguindo essa linha:
    01.02
    01.06
    01.08
    02.01
    02.02
    02.03 …
    Quando eu executo a macro, só traz as informações de 01.02
    Poderia me ajudar?

    Desde já agradeço!

  30. Yago disse:

    Boa tarde Marcos, tudo bem?

    Muito massa a planilha, mas não funcionou comigo.

    Executo a macro e ela só abre a primeira planilha, como resolver?

    Ps. montei eu mesmo a macro e também baixei a planilha pronta, porém ambas ocorrem a mesma coisa.

  31. Joao Falcao disse:

    Bom dia Marcos Rieper,

    Eu modifiquei o código para que ele extraísse comente a aba da planilha com um devido nome, por exemplo, a planilha tem 10 abas e uma chama “Detalhamento”, quando a macro rodar ela só vai consolidar o que estiver nessa aba. Porem me deparei com um problema, quando ela não encontra essa aba a macro da erro, gostaria que se possível você pudesse me ajudar a caso ela não encontre a aba ela fechar o arquivo e pular para o próximo, tem como?

    Agradeço desde ja.

  32. Rosy Vilela disse:

    Boa noite!
    Gostaria de saber como posso ajustar a macro, para ela copiar apenas uma ‘aba’ da minha planilha, que no caso tem 04 abas (plan1 plan2 plan3 plan4)

  33. Nelson Coelho Evaldt disse:

    Olá Marcos, testei o seu Macro “”Juntar Planilhas Excel em uma só” e funcionou, mais eu precisava de uma situação um pouco diferente, que é o seguinte: – Tenho um conjunto de 600 planilhas de excel com informações de pagamentos de empregados e preciso de um macro que envie para uma só planilha, mas não totalizando, gostaria que o macro abrisse uma pasta para cadas planilha no novo arquivo, então o macro deve criar uma planilha com 600 pastas. Você poderia me dar uma dica de como eu poderia fazer isto utilizando o seu macro?

    Obrigado!

  34. Rafael disse:

    Bom dia.
    Uma vez eu consegui executar a macro, mas hoje fui fazer e não consigo achar as planilhas que quero unificar na hora que executo a macro.

    O que estou fazendo errado?

    Grande abraço

  35. Marina Del Nero disse:

    Boa tarde,

    Preciso de uma ajuda!

    Minha chefe me deu duas planilhas e na planilha 01 tem varios codigos na primeria coluna, e na planilha 02 precio pegar as informações de todos esses codigos e jogar em uma coluna so cada informação referente ao seu código na planilha 01. O problema é que na planilha 02 os códigos não estão na mesma ordem que estão na planilha 01, e estão divididas em varias colunas, e preciso colocar em uma coluna só. Confuso eu sei.. tenta me ajudar por favor?

    Obrigada desde ja,

  36. Fábio Ferreira disse:

    Olá, Marcos Rieper. Tudo bem?

    Amigo, como fazer para reconhecer subpastas?

  37. Jonathan disse:

    Marcos, preciso unir vários arquivos Excel, porém, separados por abas. Consegue me ajudar?
    Desde já, agradeço!

  38. Marianna disse:

    Olá, ótima macro!

    Gostaria de saber se há algum campo na macro que possibilite ela fazer a leitura de arquivos XLS, pois ela só lê XLSX.

    Obrigada!

  39. Luiz Antonio Dias disse:

    Marcos, boa tarde.

    Obrigado.

    Por compartilhar.

    Suas macros são ótimas e ajudam tanta gente.

    Deus ilumine você. Aliás, continue iluminando, sempre.

    Abraço.

  40. Andrey disse:

    Marcos, eu baixei a planilha mas ela não esta localizando as outras que estão dentro de outra pasta .

  41. Ricardo Fonseca disse:

    será possivel com esse codigo copiar os dados mas acrecentar o nome da planilha em que estava numa coluna?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.