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, używając 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 je utworzyć zbiór kart pracy ze wszystkich książek do jednego pliku. Aby to zrobić, otwórz skoroszyt, w którym chcesz zebrać wszystkie arkusze i dodaj następujący kod makra.
Po otwarciu skoroszytu 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()
'moonexcel.com.ua
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 dokonanie odpowiednich zmian w dziewiątej linii kodu naszego makra.