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