Mesclar dezenas ou até centenas de planilhas do Excel em uma só é uma tarefa tediosa se feita manualmente. Felizmente, ao aproveitar o poder das Macros VBA, esse processo complexo pode ser automatizado com um único clique, poupando seu tempo e esforço significativamente.
Para profissionais que frequentemente lidam com consolidação de dados de vários departamentos ou relatórios periódicos, esta técnica é essencial. Usar uma Macro VBA para mesclar planilhas do Excel não só é eficiente como também minimiza o risco de erro humano comum na cópia manual de dados.
Vantagens de Usar Macros VBA
Comparado aos métodos convencionais de copiar e colar, a automação com VBA oferece vários benefícios. Primeiro, o processo de execução é muito rápido. Segundo, a consistência dos dados é garantida por ser gerenciada pelo script. Além disso, você pode personalizar o código conforme necessidades específicas, como mesclar dados sem repetir cabeçalhos.
Script VBA para Mesclar Todas as Planilhas
A seguir está um script VBA confiável e testado. Este código mesclará dados de todas as planilhas em uma pasta de trabalho, exceto a própria planilha resultante da mesclagem, em uma nova planilha chamada “RDBMergeSheet.
Sub CopyDataWithoutHeaders()
Dim sh As Worksheet
Dim DestSh As Worksheet
Dim Last As Long
Dim shLast As Long
Dim CopyRng As Range
Dim StartRow As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Excluir a planilha "RDBMergeSheet" se existir
Application.DisplayAlerts = False
On Error Resume Next
ActiveWorkbook.Worksheets("RDBMergeSheet").Delete
On Error GoTo 0
Application.DisplayAlerts = True
'Criar nova planilha chamada "RDBMergeSheet"
Set DestSh = ActiveWorkbook.Worksheets.Add
DestSh.Name = "RDBMergeSheet"
StartRow = 2
'Percorrer todas as planilhas e copiar dados para DestSh
For Each sh In ActiveWorkbook.Worksheets
If IsError(Application.Match(sh.Name, _
Array(DestSh.Name, "Information"), 0)) Then
Last = LastRow(DestSh)
shLast = LastRow(sh)
If shLast > 0 And shLast >= StartRow Then
Set CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast))
If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then
MsgBox "Espaço insuficiente na planilha de destino"
GoTo ExitTheSub
End If
CopyRng.Copy
With DestSh.Cells(Last + 1, "A")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End With
End If
End If
Next
ExitTheSub:
Application.GoTo DestSh.Cells(1)
DestSh.Columns.AutoFit
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
'Função auxiliar para encontrar última linha
Function LastRow(sh As Worksheet)
On Error Resume Next
LastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
On Error GoTo 0
End FunctionObserve que este script requer a função auxiliar LastRow, que foi incluída para detectar com precisão a última linha contendo dados.

Como Usar Este Script
- Abra sua pasta de trabalho do Excel.
- Pressione ALT + F11 para abrir o Editor VBA.
- No Explorador de Projetos, clique com o botão direito na sua pasta de trabalho, selecione Inserir > Módulo.
- Copie e cole todo o código acima na janela do módulo vazio.
- Feche o Editor VBA e retorne ao Excel.
- Execute a macro pressionando ALT + F8, selecione CopyDataWithoutHeaders, depois clique em Executar.
Como resultado, todos os dados de várias planilhas serão mesclados organizadamente em uma nova planilha. Portanto, você pode focar na análise de dados em vez do processo de coleta.

