Note: The other languages of the website are Google-translated. Back to English
Войти  \/ 
x
or
x
Регистрация  \/ 
x

or

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

Вы когда-нибудь застревали, когда вам нужно было объединить несколько книг в основную книгу в Excel? Самое ужасное, что книги, которые нужно объединить, содержат несколько листов. И как объединить только указанные листы нескольких книг в одну книгу? В этом руководстве показано несколько полезных методов, которые помогут вам поэтапно решить проблему.


Объедините несколько книг в одну книгу с помощью функции перемещения или копирования

Если необходимо объединить всего несколько книг, вы можете использовать команду «Переместить» или «Копировать», чтобы вручную переместить или скопировать листы из исходной книги в основную книгу.

1. Откройте книги, которые вы объедините в основную книгу.

2. Выберите листы в исходной книге, которые вы переместите или скопируете в основную книгу.

Ноты:

1). Вы можете выбрать несколько несмежных листов, удерживая Ctrl и щелкая вкладки листа одну за другой.

2). Чтобы выбрать несколько соседних листов, нажмите вкладку первого листа и удерживайте Shift ключ, а затем щелкните вкладку последнего листа, чтобы выбрать их все.

3). Вы можете щелкнуть правой кнопкой мыши на любой вкладке листа, щелкнуть Выбрать все листы в контекстном меню, чтобы выбрать все листы в книге одновременно.

3. После выбора необходимых листов щелкните правой кнопкой мыши вкладку листа, а затем щелкните Переместить или скопировать из контекстного меню. Смотрите скриншот:

4. Затем Переместить или скопировать всплывает диалоговое окно в Бронировать в раскрывающемся списке выберите основную книгу, в которую вы переместите или скопируете листы. Выберите переместить, чтобы закончить в Перед листом поле, отметьте Создать копию поле и, наконец, щелкните OK кнопку.

Тогда вы можете увидеть листы в двух книгах, объединенных в одну. Повторите описанные выше действия, чтобы переместить листы из других книг в основную книгу.


Объединение нескольких книг или указанных листов книг в основную книгу с помощью VBA

Если необходимо объединить несколько книг в одну, вы можете применить следующие коды VBA, чтобы быстро добиться этого. Пожалуйста, сделайте следующее.

1. Поместите все книги, которые вы хотите объединить, в одну в один каталог.

2. Запустите файл Excel (эта книга будет основной книгой).

3. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль, затем скопируйте ниже код VBA в окно модуля.

Код VBA 1: объединить несколько книг Excel в одну

Sub GetSheets()
'Updated by Extendoffice 2019/2/20
Path = "C:\Users\dt\Desktop\dt kte\"
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
End Sub
	

Ноты:

1. Приведенный выше код VBA сохранит имена листов исходных книг после слияния.

2. Если вы хотите различать, какие рабочие листы в главной книге были получены после слияния, примените приведенный ниже код VBA 2.

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

В кодах VBA: «C: \ Users \ DT168 \ Рабочий стол \ KTE \»- это путь к папке. В коде VBA 3 "Лист1, Лист3"- это указанные рабочие листы книг, которые вы объедините в основную книгу. Вы можете изменить их в зависимости от ваших потребностей.

Код VBA 2: объединить книги в одну (каждый рабочий лист будет назван с префиксом исходного имени файла):

Sub MergeWorkbooks()
'Updated by Extendoffice 2019/2/20
Dim xStrPath As String
Dim xStrFName As String
Dim xWS As Worksheet
Dim xMWS As Worksheet
Dim xTWB As Workbook
Dim xStrAWBName As String
On Error Resume Next
xStrPath = "C:\Users\DT168\Desktop\KTE\"
xStrFName = Dir(xStrPath & "*.xlsx")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set xTWB = ThisWorkbook
Do While Len(xStrFName) > 0
    Workbooks.Open Filename:=xStrPath & xStrFName, ReadOnly:=True
    xStrAWBName = ActiveWorkbook.Name
    For Each xWS In ActiveWorkbook.Sheets
    xWS.Copy After:=xTWB.Sheets(xTWB.Sheets.Count)
    Set xMWS = xTWB.Sheets(xTWB.Sheets.Count)
    xMWS.Name = xStrAWBName & "(" & xMWS.Name & ")"
    Next xWS
    Workbooks(xStrAWBName).Close
    xStrFName = Dir()
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Код VBA 3: объединить указанные листы книг в основную книгу:

Sub MergeSheets2()
'Updated by Extendoffice 2019/2/20
Dim xStrPath As String
Dim xStrFName As String
Dim xWS As Worksheet
Dim xMWS As Worksheet
Dim xTWB As Workbook
Dim xStrAWBName As String
Dim xI As Integer
On Error Resume Next

xStrPath = " C:\Users\DT168\Desktop\KTE\"
xStrName = "Sheet1,Sheet3"

xArr = Split(xStrName, ",")

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set xTWB = ThisWorkbook
xStrFName = Dir(xStrPath & "*.xlsx")
Do While Len(xStrFName) > 0
Workbooks.Open Filename:=xStrPath & xStrFName, ReadOnly:=True
xStrAWBName = ActiveWorkbook.Name
For Each xWS In ActiveWorkbook.Sheets
For xI = 0 To UBound(xArr)
If xWS.Name = xArr(xI) Then
xWS.Copy After:=xTWB.Sheets(xTWB.Sheets.count)
Set xMWS = xTWB.Sheets(xTWB.Sheets.count)
xMWS.Name = xStrAWBName & "(" & xArr(xI) & ")"
Exit For
End If
Next xI
Next xWS
Workbooks(xStrAWBName).Close
xStrFName = Dir()
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

4. нажмите F5 ключ для запуска кода. Затем все рабочие листы или указанные рабочие листы рабочих книг в определенной папке сразу объединяются в основную книгу.


Легко объединяйте несколько книг или указанные листы книг в одну книгу

К счастью, Сочетать рабочая тетрадь Kutools for Excel значительно упрощает объединение нескольких книг в одну. Давайте посмотрим, как заставить эту функцию работать при объединении нескольких книг.

Перед применением Kutools for Excel, Пожалуйста, сначала скачайте и установите.

1. Создайте новую книгу и щелкните Кутулс Плюс > Сочетать. Затем появится диалоговое окно с напоминанием о том, что все объединенные книги должны быть сохранены, а функция не может быть применена к защищенным книгам, нажмите кнопку OK кнопку.

2. в Комбинировать листы мастер, выберите Объедините несколько листов из книг в одну книгу вариант, а затем щелкните Далее кнопка. Смотрите скриншот:

3. в Объединить рабочие листы - шаг 2 из 3 диалогового окна, нажмите Добавить > Файл or Папка чтобы добавить файлы Excel, которые вы объедините в один. После добавления файлов Excel щелкните значок Завершить и выберите папку для сохранения основной книги. Смотрите скриншот:

Теперь все книги объединены в одну.

По сравнению с двумя вышеуказанными методами, Kutools for Excel имеет следующие преимущества:

  • 1) Все книги и рабочие листы перечислены в диалоговом окне;
  • 2) Для листов, которые вы хотите исключить из объединения, просто снимите флажок;
  • 3) Пустые рабочие листы исключаются автоматически;
  • 4) Исходное имя файла будет добавлено в качестве префикса к имени листа после объединения;
  • Чтобы узнать о дополнительных функциях этой функции, пожалуйста, посетите здесь.

  Если вы хотите получить 30-дневную бесплатную пробную версию этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Kutools для Excel - Помогает всегда закончить работу раньше времени, чтобы у вас было больше времени, чтобы наслаждаться жизнью
Вы часто играете в догонялки с работой, не хватает времени на себя и семью?  Kutools for Excel может помочь вам решить 80% головоломок Excel и повысить эффективность работы на 80%, даст вам больше времени, чтобы заботиться о семье и наслаждаться жизнью.
300 расширенных инструментов для 1500 рабочих сценариев сделают вашу работу намного проще, чем когда-либо.
Больше не нужно запоминать формулы и коды VBA, теперь дайте вашему мозгу отдохнуть.
Сложные и повторяющиеся операции могут быть выполнены разовой обработкой за секунды.
Сократите количество операций с клавиатурой и мышью каждый день, попрощайтесь с профессиональными заболеваниями прямо сейчас.
Станьте экспертом по Excel за 3 минуты, это поможет вам быстро получить признание и продвижение по службе.
110,000 300 высокоэффективных людей и выбор XNUMX+ всемирно известных компаний.
Сделайте так, чтобы ваши 39.0 доллара были больше, чем обучение других людей.
Полнофункциональная бесплатная 30-дневная пробная версия. 60-дневная гарантия возврата денег без причины.

Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Tedi · 8 years ago
    This is superb :lol: helped me a lot....
  • To post as a guest, your comment is unpublished.
    Henrik · 8 years ago
    Hey

    Great tip. Did [i]almost[/i] all I wanted.

    In the combinde woorkbook, I would have lovede for the worksheet name to contain the name of the original woorkbook, so I know which woorkbook the data comes from.

    The data I'm combining, is from different archives. I have to search for an entry, but don't know which archive it's in.

    So by combining all the data in one file will make it possible for me to search all archives at once.

    But I still need to know, which archive the entry is in.

    Henrik
    • To post as a guest, your comment is unpublished.
      Code · 7 years ago
      For the code to incorporate the file name just do this.

      Sub GetSheets()
      Dim temp As String
      Path = "C:\Users\....\Desktop\Excel combine\"
      Filename = Dir(Path & "*.xlsx")
      Do While Filename ""
      Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
      temp = ActiveWorkbook.Name
      ActiveSheet.Name = temp
      ActiveWorkbook.Sheets(temp).Copy After:=ThisWorkbook.Sheets(1)
      Workbooks(Filename).Close
      Filename = Dir()
      Loop
      End Sub

      Note: this is to only copy the first sheet, it can be tweeked to do all sheets
      • To post as a guest, your comment is unpublished.
        Adriano Marcato · 6 years ago
        It's a great solution indeed. thank you.
        One Problem though, when I execute it like this excel will ask if I want to save alterations before closing (Since the name was changed), and I don't want to do it for every file (around 32 per execution).
        Would there be a way to solve this?
      • To post as a guest, your comment is unpublished.
        LAW · 7 years ago
        How do you incorporate more sheets and how do you specify a different master file to paste all the sheets.
  • To post as a guest, your comment is unpublished.
    Amir · 8 years ago
    Hi!
    Thanks a lot of this file.............
    :roll:
    Best Regard
  • To post as a guest, your comment is unpublished.
    Susie · 8 years ago
    I get a 'runtime error 1004', Copy Method of Worksheet class failed on the line that reads: Sheet.Copy After:=ThisWorkbook.Sheets(1). I'm using Excel 2010.

    Can you assist? Thanks, - Susie
    • To post as a guest, your comment is unpublished.
      Chris F · 5 years ago
      Go to view and unhide "PERSONAL" - it seems to have trouble executing the whole code while the master is hidden.
      You can make the macro native to that workbook, but you'd have to recreate the whole thing every time you wanted to use it
    • To post as a guest, your comment is unpublished.
      Chris F · 5 years ago
      [quote name="Susie"]I get a 'runtime error 1004', Copy Method of Worksheet class failed on the line that reads: Sheet.Copy After:=ThisWorkbook.Sheets(1). I'm using Excel 2010.

      Can you assist? Thanks, - Susie[/quote]
      Had the same problem, it works when I go to view and unhide "PERSONAL", it seems to have trouble accessing this macro with the master hidden.
    • To post as a guest, your comment is unpublished.
      samuel Birch · 5 years ago
      Hey Susie,

      Ive been working on this problem for a while now myself, getting the same error.

      Check to see if the module was created under PERSONAL instead of your active workbook.

      Once I created the module under the correct tree, the below code worked just fine.

      Sub GetSheets_xls()
      Dim Sheet As Worksheet
      Path = "C:\Users\yournamehere\Desktop\Testingfolder\"
      Filename = Dir(Path & "*.xls")
      Do While Filename ""
      Workbooks.Open Filename:=Path & Filename, ReadOnly:=False
      Set Sheet = ActiveWorkbook.Sheets(1)
      Sheet.Copy After:=ThisWorkbook.Sheets(1)
      'Next Sheet
      Workbooks(Filename).Close
      Filename = Dir()
      Loop
      End Sub




      Hope this helps!
      • To post as a guest, your comment is unpublished.
        DS · 4 years ago
        Thanks a lot. Your code worked well.
  • To post as a guest, your comment is unpublished.
    A. Karthi · 8 years ago
    Hi Plz help me out to this below condition.

    I have different workbook which has more than 5 worksheets each in different path. I need to consolidate all worksheets from different workbook into single workbook. Can anyone help me to resolve with macro.TIA!
    • To post as a guest, your comment is unpublished.
      E nic · 4 years ago
      Our office has duplication of data, (i.e.-name, address, city, amount, date signed) from several excel originals and trying to combine the data is going to be a work in progress. How can that be done to eliminate double work and double information entries?
    • To post as a guest, your comment is unpublished.
      Taslima · 5 years ago
      KUTOOLS Awsome solution.

      I need one more help when I create master workbook then cell color of work sheet is changed from original worksheet.

      How can I keep it like original worksheet.
    • To post as a guest, your comment is unpublished.
      Jay Chivo · 8 years ago
      [quote name="A. Karthi"]Hi Plz help me out to this below condition.

      I have different workbook which has more than 5 worksheets each in different path. I need to consolidate all worksheets from different workbook into single workbook. Can anyone help me to resolve with macro.TIA![/quote]

      Please go to download and install the Kutools for Excel, you can quickly get it done. But if you want to use a VBA, it may be too complicated.

      For more information about how to get it done, please visit:http://www.extendoffice.com/product/kutools-for-excel/excel-combine-worksheets-into-one.html