Consolidação de dados em Excel VBA – União de dados em Excel VBA
Objetivo: Esta planilha realiza a consolidação de dados de várias planilhas a partir de uma configuração inicial. Muito útil para unir dados de filiais.
É muito comum a necessidade de unir dados de várias planilhas, principalmente quando trabalhamos em empresas com filiais.
Estas informações normalmente tem que ser consolidadas manualmente frequentemente o que gera um bom trabalho.
Nesta planilha automatizada com o uso de Excel VBA você tem um modo de como fazer com que estes dados sejam unidos automaticamente.
Como configurar
Para configurar a planilha altere os dados da planilha:
Caminho: Digite o caminho completo do arquivo, incluindo a extensão
Planilha: Digite o nome da planilha se for apenas uma planilha do arquivo, se forem todas as planilhas do arquivo que devam ser unidas, não digite nada neste campo
Coluna final: Digite a coluna até qual a planilha Excel deverá realizar a união dos dados.
Altere também na planilha Consolidado o nome dos campos conforme as planilhas que você irá unir.
Assim que forem realizadas todas as alterações necessárias uma única vez, basta você clicar no botão que a planilha irá realizar a consolidação de todos os dados no Excel.
Código VBA Excel
Abaixo o código VBA utilizado nesta planilha.
Sub lsConsolidarPlanilhas()
Dim lWorkbook As Workbooks
Dim lWorksheet As Worksheet
Dim lUltimaLinhaAtiva As Long
Dim lControle As Long
Dim lUltimaLinhaAtiva2 As Long
Dim lUltimaLinhaAtiva3 As Long
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Worksheets("Consolidado").Select
Worksheets("Consolidado").Range("A2:G1000000").Select
Selection.ClearContents
lUltimaLinhaAtiva = Worksheets("Configuração").Cells(Worksheets("Configuração").Rows.Count, 1).End(xlUp).Row
lControle = 2
While lControle <= lUltimaLinhaAtiva
Workbooks.Open Filename:=Worksheets("Configuração").Range("A" & lControle).Value
Set lworkbooks = ActiveWorkbook
For Each lWorksheet In lworkbooks.Worksheets
If (lWorksheet.Name = Workbooks("Consolidado.xlsm").Worksheets("Configuração").Range("B" & lControle).Value Or _
Workbooks("Consolidado.xlsm").Worksheets("Configuração").Range("B" & lControle).Value = "") Then
Workbooks(lworkbooks.Name).Worksheets(lWorksheet.Name).Activate
lUltimaLinhaAtiva2 = Worksheets(lWorksheet.Name).Cells(Worksheets(lWorksheet.Name).Rows.Count, 1).End(xlUp).Row
lWorksheet.Select
lWorksheet.Range("A2:" & Workbooks("Consolidado.xlsm").Worksheets("Configuração").Range("C" & lControle).Value & lUltimaLinhaAtiva2).Select
Selection.Copy
lUltimaLinhaAtiva3 = Workbooks("Consolidado.xlsm").Worksheets("Consolidado").Cells(Workbooks("Consolidado.xlsm").Worksheets("Consolidado").Rows.Count, 1).End(xlUp).Row + 1
Workbooks("Consolidado.xlsm").Worksheets("Consolidado").Activate
Workbooks("Consolidado.xlsm").Worksheets("Consolidado").Range("A" & lUltimaLinhaAtiva3).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next lWorksheet
Workbooks(lworkbooks.Name).Close
lControle = lControle + 1
Wend
Worksheets("Configuração").Select
Worksheets("Configuração").Range("A1").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Planilhas consolidadas!"
End Sub

A planilha principal é a Consolidado.xlsm, as outras em anexo são para você usar como exemplo, não esqueça de salvá-las no seu computador e configurar o local aonde foram salvas.
Abraço
Marcos Rieper






