Как объединить несколько книг excel с помощью vba?
Чтобы объединить несколько книг Excel, вам необходимо использовать некоторый код, который позволит вам выбрать, какие файлы вы хотите объединить, или вы можете обратиться к определенному местоположению пути и объединить все файлы Excel в текущей книге.
VBA объединяет несколько книг
Вы можете использовать следующий код, который использует местоположение, которое я указал в переменной пути (папка на рабочем столе моей системы).
Dim Path As String Dim Filename As String Dim Sheet As Worksheet Path = "C:UsersDellDesktopsample-data" Filename = Dir(Path & "*.xlsx") Do While Filename <> "" Workbooks.Open Filename:=Path & Filename, ReadOnly:=True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After:=ThisWorkbook.Sheets(1) Next Sheet Workbooks(Filename).Close Filename = Dir() Loop
Действия по объединению файлов Excel с помощью VBA
- Откройте редактор Visual Basic (обязательно включите вкладку «Разработчик», если она уже есть на ленте).
- После этого найдите текущую книгу в окне проекта (control + r) и вставьте в нее новый модуль.
- У вас появится окно кода в модуле (дважды щелкните по нему), куда вам нужно вставить имеющийся у вас код (как есть).
- Отсюда вам нужно изменить значение переменной пути на местоположение папки, в которой находятся все файлы Excel, которые вы хотите объединить.
- В конце запустите код, и вы получите все листы книги в текущем файле.
Полезные ссылки: Запуск макроса – Средство записи макросов – Редактор Visual Basic – Персональный справочник по макросам
Этот код открывает каждый файл один за другим, копирует каждый рабочий лист один за другим и вставляет его в текущий файл с тем же именем. Вот тот же код, но с обновлением экрана до false в начале, чтобы запустить все на бэкэнде.
Dim Path As String Dim Filename As String Dim Sheet As Worksheet Application.ScreenUpdating = False Path = "C:UsersDellDesktopsample-data" Filename = Dir(Path & "*.xlsx") Do While Filename <> "" Workbooks.Open Filename:=Path & Filename, ReadOnly:=True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After:=ThisWorkbook.Sheets(1) Next Sheet Workbooks(Filename).Close Filename = Dir() Loop Application.ScreenUpdating = True End Sub
Примечание. Если вы хотите узнать, как объединить данные из нескольких книг в одну таблицу, обязательно ознакомьтесь с этим руководством.