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

В руководстве показаны три способа объединения файлов Excel в один: путем копирования вкладок листа, запуска VBA и использования инструмента Копировать листы.

Намного проще обрабатывать данные в одном файле вместо переключения между многочисленными источниками. Однако объединение нескольких книг Excel в один файл может оказаться трудоемким и длительным процессом, особенно если книги, которые необходимо объединить, содержат несколько листов. Итак, как бы вы подошли к проблеме? Будете ли вы обрабатывать листы вручную или с помощью кода VBA? Или вы используете один из специализированных инструментов для объединения файлов Excel? Ниже вы найдете несколько хороших способов справиться с этой задачей.

Примечание. В этой статье https://faq-word.ru/ мы рассмотрим, как скопировать листы из нескольких книг Excel в одну книгу. Если вы ищете быстрый способ копирования данных из нескольких листов в один лист, вы найдете подробное руководство в другом руководстве: Как объединить несколько листов в один.

Как объединить два файла Excel в один, скопировав листы

Если вам нужно объединить всего пару файлов Excel, вы можете копировать или перемещать листы из одного файла в другой вручную. Ее, как:

  1. Откройте рабочие книги, которые вы хотите объединить.
  2. Выберите листы в исходной книге, которые вы хотите скопировать в основную книгу.Чтобы выбрать несколько листов, используйте один из следующих способов:
    • Чтобы выбрать соседние листы, щелкните на первой вкладке листа, которую вы хотите скопировать, нажмите и удерживайте клавишу Shift, а затем перейдите на вкладку последнего листа. При этом будут выбраны все промежуточные листы.
    • Чтобы выбрать несмежные листы, удерживая клавишу Ctrl, щелкните на каждой вкладке листа по отдельности.
  3. Выбрав все листы, щелкните правой кнопкой мыши на любой из выбранных вкладок, а затем выберите Переместить или Скопировать.Выберите листы, которые вы хотите объединить.
  4. В диалоговом окне Переместить или скопировать выполните следующие действия:
    • В раскрывающемся списке Переместить выбранные листы в книгу выберите целевую книгу, в которую вы хотите объединить другие файлы.
    • Укажите, куда именно должны быть вставлены скопированные вкладки листа. В нашем случае мы выбираем вариант перехода к завершению.
    • Установите флажок Создать копию, если вы хотите, чтобы исходные листы оставались в исходном файле.
    • Нажмите OK, чтобы завершить процесс слияния.
    Скопируйте вкладки листа из одного файла Excel в другой.

На скриншоте ниже показаны таблицы результатов из двух файлов Excel, объединенные в один. Чтобы объединить вкладки из других файлов Excel, повторите описанные выше действия для каждой книги в отдельности. Листы из двух файлов Excel объединяются в один.

При копировании листов вручную, пожалуйста, помните о следующем ограничении, налагаемом Excel: невозможно переместить или скопировать группу листов, если какой-либо из этих листов содержит таблицу. В этом случае вам нужно будет либо преобразовать таблицу в диапазон, либо использовать один из следующих методов, которые не имеют этого ограничения.

Как объединить файлы Excel с помощью VBA

Если у вас есть несколько файлов Excel, которые необходимо объединить в один файл, более быстрым способом было бы автоматизировать процесс с помощью макроса VBA.

Ниже вы найдете код VBA, который копирует все листы из всех выбранных вами файлов Excel в одну книгу. Этот макрос MergeExcelFiles написан Алексом, одним из наших лучших гуру Excel.

Важное замечание!Макрос работает со следующим предостережением — объединяемые файлы не должны быть открыты физически или в памяти. В таком случае вы получите сообщение об ошибке во время выполнения.
?
Sub MergeExcelFiles()
    Dim fnameList, fnameCurFile As Variant
    Dim countFiles, countSheets As Integer
    Dim wksCurSheet As Worksheet
    Dim wbkCurBook, wbkSrcBook As Workbook
    fnameList = Application.GetOpenFilename(FileFilter:="Microsoft Excel Workbooks (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", Title:="Choose Excel files to merge", MultiSelect:=True)
    If (vbBoolean <> VarType(fnameList)) Then
        If (UBound(fnameList) > 0) Then
            countFiles = 0
            countSheets = 0
            Application.ScreenUpdating = False
            Application.Calculation = xlCalculationManual
            Set wbkCurBook = ActiveWorkbook
            For Each fnameCurFile In fnameList
                countFiles = countFiles + 1
                Set wbkSrcBook = Workbooks.Open(Filename:=fnameCurFile)
                For Each wksCurSheet In wbkSrcBook.Sheets
                    countSheets = countSheets + 1
                    wksCurSheet.Copy after:=wbkCurBook.Sheets(wbkCurBook.Sheets.Count)
                Next
                wbkSrcBook.Close SaveChanges:=False
            Next
            Application.ScreenUpdating = True
            Application.Calculation = xlCalculationAutomatic
            MsgBox "Processed " & countFiles & " files" & vbCrLf & "Merged " & countSheets & " worksheets", Title:="Merge Excel files"
        End If
    Else
        MsgBox "No files selected", Title:="Merge Excel files"
    End If
End Sub

Как добавить этот макрос в вашу рабочую книгу

Если вы хотите вставить макрос в свою собственную рабочую книгу, выполните следующие обычные действия:

  1. Нажмите Alt + F11, чтобы открыть редактор Visual Basic.
  2. Щелкните правой кнопкой мыши на этой рабочей книге на левой панели и выберите в контекстном меню пункт ВставитьМодуль.
  3. В появившемся окне (окно кода) вставьте приведенный выше код.

Подробные пошаговые инструкции см. в разделе «Как вставить и запустить код VBA в Excel».

Кроме того, вы можете загрузить макрос в файле Excel, открыть его вместе с целевой книгой (включить макрос, если будет предложено), затем переключиться на свою собственную книгу и нажать Alt + F8 для запуска макроса. Если вы новичок в использовании макросов в Excel, пожалуйста, выполните подробные действия, приведенные ниже.