Как объединить несколько файлов Excel в одну книгу Excel

Мне позвонил друг, который хотел объединить несколько файлов Excel в одну книгу Excel. У него было много файлов в папке, и он хотел собрать все листы из всех книг в одну книгу.

Хотя это можно сделать вручную, это займет много времени и может привести к ошибкам.

Однако простой код VBA может сделать это за несколько секунд.

Объедините несколько файлов Excel в один файл

Вот код, который может объединить несколько книг Excel в указанной папке в одну книгу Excel:

Sub ConslidateWorkbooks () 'Создано Sumit Bansal из https://trumpexcel.com Dim FolderPath As String Dim File As String Dim Sheet As Worksheet Application.ScreenUpdating = False FolderPath = Environ ("userprofile") & "DesktopTest" Filename = Dir ( FolderPath & "* .xls *") Do While Filename "" Workbooks.Open Filename: = FolderPath & Filename, ReadOnly: = True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After: = ThisWorkbook.Sheets (1) Next Sheet Workbooks (Имя файла) .Close Filename = Dir () Loop Application.ScreenUpdating = True End Sub

Как использовать этот код?

Вот шаги по использованию этого кода:

  • Поместите все файлы Excel, которые вы хотите объединить, в папку. Для этого урока я создал папку с именем Test, в которой есть шесть файлов (4 книги Excel и по 1 Power Point и Word).
  • Откройте новую книгу Excel.
  • Нажмите ALT + F11 (или перейдите в «Разработчик» -> «Код» -> «Visual Basic»). Откроется редактор Visual Basic.
  • В редакторе VB Editor щелкните правой кнопкой мыши любой из объектов книги и выберите «Вставить» -> «Модуль». Это вставит модуль для книги.
  • Дважды щелкните модуль. Откроется окно кода справа.
  • Скопируйте и вставьте приведенный выше код в окно кода.
  • В коде вам нужно изменить следующую строку кода:
    FolderPath = Environ ("профиль пользователя") & "DesktopTest"

    В этой строке замените часть в двойных кавычках (выделена оранжевым) на расположение папки, в которой у вас есть файлы, которые вы хотите объединить. В приведенном выше коде папка находится на рабочем столе. Если он у вас находится в другом месте, укажите здесь этот путь.

  • Поместите курсор в любом месте кода и нажмите зеленую кнопку воспроизведения в параметрах панели инструментов (или нажмите клавишу F5).

Это запустит код, и все рабочие листы из всех файлов Excel в папке будут объединены в одну книгу.

Как работает этот код?

  • Код использует функцию DIR для получения имен файлов из указанной папки.
  • Следующая строка присваивает имя первого файла Excel переменной «Filename».
    Имя файла = Dir (FolderPath & «* .xls *»)
  • Затем используется цикл Do While, чтобы проверить, все ли файлы были покрыты.
  • В цикле «Do While» цикл «For Each» используется для копирования всех листов в книгу, в которой мы запускаем код.
  • В конце цикла Do Loop используется следующая строка кода: Filename = Dir (). Он присваивает имя следующего файла Excel переменной Filename, и цикл запускается снова.
  • Когда все файлы покрыты, функция DIR возвращает пустую строку, когда цикл заканчивается.

Вот объяснение функции DIR в библиотеке MSDN:

Dir возвращает первое имя файла, соответствующее имени пути. Чтобы получить любые дополнительные имена файлов, соответствующие имени пути, вызовите Dir снова без аргументов. Когда имена файлов больше не совпадают, Dir возвращает строку нулевой длины («»).

Вы когда-нибудь пробовали что-то подобное с помощью VBA? Поделитесь тем, что вы сделали, и мы все сможем извлечь из этого уроки.

Экономьте безумное количество времени с помощью VBA. Проверьте КУРС Excel VBA.

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave