Иногда нам нужно собрать листы из разных книг Эксель для создания нового отчета или файла с консолидированными данными. Такую операцию можно проделать и вручную, стандартными средствами 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.), то вам необходимо будет внести соответствующие изменения в девятую ленту кода нашего макроса.