ВГОРУ

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

Опис

Інколи нам потрібно зібрати аркуші з різних книг Ексель для стоврення нового звіту або файлу з консолідованими даними. Таку операцію можна зробити і вручну, стандартними засобами MS Excel, проте це може зайняти багато часу та сил. Давайте розглянемо як ми можемо автоматизувати цей процес та пришвидшити роботу зі звітами.

Наприклад, ми маємо багато робочих книг Excel, та хочемо зробити збір робочих листів зі всіх книг в один файл. Для цього відкрийте книгу, куди ви хочете зібрати всі аркуші та додайте наступний код макросу.


VBA код для макросу

У відкритій книзі Excel, куди ви хочете зібрати всі аркуші, відкрийте Visual Basic Editor (Alt+F11), вставте модуль VBA (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 "Не було обрано жодного файлу!"
        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.), то вам необхідно буде внести відповідні зміни до дев'ятої стрічки коду нашого макросу.

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