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