TOP

Coleção de planilhas

Descrição

Às vezes precisamos combinar planilhas de diferentes pastas de trabalho do Excel para criar um novo relatório ou arquivo de dados consolidados. Essa operação pode ser feita manualmente, usando ferramentas padrão MS Excel, mas pode exigir muito tempo e esforço. Vejamos como podemos automatizar esse processo e agilizar o trabalho com relatórios.

Por exemplo, temos muitas pastas de trabalho Excel e queremos coletar planilhas de todas as pastas de trabalho em um arquivo. Para fazer isso, abra a pasta de trabalho onde deseja coletar todas as planilhas e adicione o seguinte código de macro.


Código VBA para a macro

Com a pasta de trabalho Excel aberta, onde deseja coletar todas as planilhas, abra Visual Basic Editor (Alt+F11), insira o módulo VBA (Insert - Module) e copie este código de macro lá:

Sub CombineWorkbooks()
    Dim FilesToOpen
    Dim x As Integer
    
    On Error GoTo ErrHandler
    Application.ScreenUpdating = False
    
    FilesToOpen = Application.GetOpenFilename _
                  (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
                   MultiSelect:=True, Title:="Files to Merge")
                   
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Nenhum arquivo foi selecionado!"
        GoTo ExitHandler
    End If
    
    x = 1
    While x <= UBound(FilesToOpen)
        Workbooks.Open Filename:=FilesToOpen(x)
        Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        x = x + 1
    Wend
    
    ExitHandler:
    Application.ScreenUpdating = True
    Exit Sub
    
    ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
    
End Sub

Depois disso, você pode retornar para Excel e executar nossa macro através do menu Tools - Macro - Macros (Alt+F8). Uma caixa de diálogo aparecerá onde você precisa selecionar um ou mais (mantendo Ctrl) arquivos cujas planilhas queremos adicionar à pasta de trabalho atual.

Se você usar uma extensão de arquivo Excel diferente (por exemplo, *.xlsx, *.xlsm, *.xlsb, etc.), será necessário fazer as alterações apropriadas na nona linha de código em nossa macro.

Artigos sobre o tema: