Збір робочих листів

Наприклад, ми маємо багато робочих книг Excel, та хочемо зробити збір робочих листів зі всіх книг в один файл. Для цього відкрийте книгу, куди ви хочете зібрати всі аркуші, потім відкрийте Visual Basic Editor (Alt+F11), додайте новий бланк модуля (Insert - Module) і скопіюйте цей текст макроса туди:

 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 "Have been chosen no files!"
        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

Після цього можете повернутися в Excel і запустити наш макрос через меню Tools - Macro - Macros (Alt+F8). Відобразиться діалогове вікно, де потрібно вибрати один чи кілька (утримуючи Ctrl) файлів, аркуші з яких ми хочемо добавити до поточної книги.

Якщо ви використовуєте інше розширення Excel файлів (наприклад, *.xlsx, *.xlsm, *.xlsb, etc.), то вам необхідно буде внести відповідні зміни до сьомої стрічки коду нашого макросу.

Статті по темі:

Сортування аркушів в книзі