Unir planilhas Excel com VBA
Neste artigo apresentaremos um código VBA Excel que realiza a unificação de planilhas.
Imagine a seguinte situação. Você tem várias pastas de trabalho Excel preenchidas por diversos usuários, ou ainda vieram dezenas de arquivos referentes á um mês de processamento de arquivos de um determinado fornecedor e você gostaria de uni-los para analisá-los.
Este código VBA Excel realiza a unificação das planilhas que estiverem abertas em um único arquivo informado no início do processo.
Abaixo o processo como funciona:
1. Copie o código VBA e adicione á sua pasta Personal. Veja aqui como realizar esta tarefa: Habilitando a guia desenvolvedor e copiando códigos VBA da internet.
'UnificarPlanilhas Macro
Sub lsUnificarPlanilhas()
Dim Message As String
Dim Title As String
Dim Default As String
Dim MyValue As String
Dim wb As Workbook
Dim lUltimaColunaAtiva As Long
Dim lUltimaLinhaAtiva As Long
Dim lRng As Range
Message = "Informe o nome da Planilha de Destino"
Title = "Unificar Planilhas"
Default = "1"
'Solicita informação da planilha que será unificada
PlanilhaDestino = InputBox(Message, Title, Padrão)
If PlanilhaDestino = "" Then
MsgBox "Planilha não informada, a macro será Finalizada!"
Exit Sub
End If
'Verificar se o arquivo existe
For i = 1 To Workbooks.Count
If Workbooks(i).Name = PlanilhaDestino Then
Exit For
Else
If i = Workbooks.Count Then
MsgBox "Planilha Destino não Encontrada, a macro será Finalizada!"
Exit Sub
End If
End If
Next i
'Colar os dados selecinoados
For i = 1 To Workbooks.Count
If Workbooks(i).Name <> "PERSONAL.XLSB" And Workbooks(i).Name <> PlanilhaDestino Then
Workbooks(Workbooks(i).Name).Worksheets(1).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" & 2 & ":" & gfLetraColuna(lRng) & lUltimaLinhaAtiva).Select
Selection.Copy
Workbooks(PlanilhaDestino).Worksheets(1).Activate
lUltimaLinhaAtiva = Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A" & lUltimaLinhaAtiva).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Next i
' Fecha planilhas unificadas
For Each wb In Application.Workbooks
If wb.Name <> "PERSONAL.XLSB" And wb.Name <> PlanilhaDestino Then
wb.Close SaveChanges:=False
End If
Next
End Sub
Function gfLetraColuna(ByVal rng As Range) As String
Dim lTexto() As String
lTexto = Split(rng.Address, "$")
gfLetraColuna = lTexto(1)
End Function
2. Abra todas as planilhas que gostaria de unificar;
3. Vá na guia Desenvolvedor e no botão Macros, selecione PERSONAL.XLSB!lsUnificarPanilhas e clique em Executar;
4. Informe a planilha que receberá a união das planilhas e clique em OK;
5. Aguarde o término do processamento. Todos os dados da primeira planilha ativa de cada arquivo serão copiados e as planilhas fechadas, exceto a planilha de destino.
Se quiser pode treinar com as planilhas utilizadas neste exemplo efetuando o download no botão abaixo.
DIGITE O SEU EMAIL PARA FAZER O DOWNLOAD DOS ARQUIVOS: Baixe a planilha
Abraço
Marcos Rieper
Curso Excel Completo – Do Básico ao VBA
Quer aprender Excel do Básico, passando pela Avançado e chegando no VBA? Clique na imagem abaixo:







