Como mesclar planilhas Excel automaticamente

Advertisement

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.

Advertisement

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 Function

Observe que este script requer a função auxiliar LastRow, que foi incluída para detectar com precisão a última linha contendo dados.

Advertisement
Macro VBA para mesclar planilhas do Excel na interface do Microsoft Excel
Imagem: Editor VBA no Excel mostrando o código macro para mesclar planilhas.

Como Usar Este Script

  1. Abra sua pasta de trabalho do Excel.
  2. Pressione ALT + F11 para abrir o Editor VBA.
  3. No Explorador de Projetos, clique com o botão direito na sua pasta de trabalho, selecione Inserir > Módulo.
  4. Copie e cole todo o código acima na janela do módulo vazio.
  5. Feche o Editor VBA e retorne ao Excel.
  6. 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.

Advertisement

Latest Articles