TOP

Zbiór arkuszy ćwiczeń

Opis

Czasami musimy połączyć arkusze z różnych skoroszytów programu Excel, aby utworzyć nowy raport lub skonsolidowany plik danych. Taką operację można wykonać ręcznie, przy użyciu standardowych narzędzi MS Excel, ale może to zająć dużo czasu i wysiłku. Zastanówmy się, jak możemy zautomatyzować ten proces i przyspieszyć pracę z raportami.

Na przykład mamy wiele skoroszytów Excel i chcemy zebrać arkusze ze wszystkich skoroszytów w jednym pliku. Aby to zrobić, otwórz skoroszyt, w którym chcesz zebrać wszystkie arkusze i dodaj następujący kod makra.


VBA kod makra

Mając otwarty skoroszyt Excel, w którym chcesz zebrać wszystkie arkusze, otwórz Visual Basic Editor (Alt+F11), wstaw moduł VBA (Insert - Module) i skopiuj tam ten kod makra:

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 "Nie wybrano żadnego pliku!"
        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

Następnie możesz wrócić do Excel i uruchomić nasze makro poprzez menu Tools - Macro - Macros (Alt+F8). Pojawi się okno dialogowe, w którym należy wybrać jeden lub więcej (przytrzymując klawisz Ctrl) plików, których arkusze chcemy dodać do bieżącego skoroszytu.

Jeśli używasz innego rozszerzenia pliku Excel (na przykład *.xlsx, *.xlsm, *.xlsb itp.), to konieczne będzie wprowadzenie odpowiednich zmian w dziewiątej linii kodu w naszym makrze.

Artykuły na ten temat: