Как объединить несколько книг 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

  1. Откройте редактор Visual Basic (обязательно включите вкладку «Разработчик», если она уже есть на ленте).
    open the visual basic editor
  2. После этого найдите текущую книгу в окне проекта (control + r) и вставьте в нее новый модуль.
    locate the current workbook
  3. У вас появится окно кода в модуле (дважды щелкните по нему), куда вам нужно вставить имеющийся у вас код (как есть).
    code window in the module
  4. Отсюда вам нужно изменить значение переменной пути на местоположение папки, в которой находятся все файлы Excel, которые вы хотите объединить.
    change the value for the path variable
  5. В конце запустите код, и вы получите все листы книги в текущем файле.

Полезные ссылки: Запуск макросаСредство записи макросовРедактор 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

Примечание. Если вы хотите узнать, как объединить данные из нескольких книг в одну таблицу, обязательно ознакомьтесь с этим руководством.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *