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