Прескочи на основното съдържание

Как да комбинирам няколко работни книги в една главна работна книга в Excel?

Автор: Техническа поддръжка Последна промяна: 2020-05-15

Били ли сте някога в затруднение, когато трябва да комбинирате множество работни книги в главна работна книга в Excel? Най-ужасното е, че работните книги, които трябва да комбинирате, съдържат множество работни листове. И как да комбинирате само посочените работни листове от множество работни книги в една работна книга? Този урок демонстрира няколко полезни метода, които да ви помогнат да разрешите проблема стъпка по стъпка.


Комбинирайте множество работни книги в една работна книга с функцията за преместване или копиране

Ако има само няколко работни книги, които трябва да бъдат комбинирани, можете да използвате командата Преместване или Копиране, за да преместите или копирате ръчно работни листове от оригиналната работна книга в основната работна книга.

1. Отворете работните книги, които ще обедините в основна работна книга.

2. Изберете работните листове в оригиналната работна книга, които ще преместите или копирате в основната работна книга.

Забележки:

1). Можете да изберете няколко несъседни работни листа, като задържите Ctrl и щракване върху разделите на листа един по един.

2). За да изберете няколко съседни работни листа, моля, щракнете върху раздела на първия лист, задръжте Превключване и след това щракнете върху раздела на последния лист, за да ги изберете всички.

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. Ако просто искате да комбинирате определени работни листове от работните книги в главна работна книга, кодът 3 на VBA по-долу може да ви помогне.

В кодовете на VBA, „C:\Users\DT168\Desktop\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 за Excel прави много по-лесно обединяването на множество работни книги в една. Нека да видим как тази функция да работи при комбиниране на множество работни книги.

Преди да кандидатствате Kutools за Excel, Моля те първо го изтеглете и инсталирайте.

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

2. В Комбинирайте работни листове съветник, изберете Комбинирайте няколко работни листа от работни книги в една работна книга опция и след това щракнете върху Напред бутон. Вижте екранна снимка:

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

Сега всички работни книги са обединени в една.

В сравнение с горните два метода, Kutools за Excel има следните предимства:

  • 1) Всички работни книги и работни листове са изброени в диалоговия прозорец;
  • 2) За работните листове, които искате да изключите от сливането, просто махнете отметката;
  • 3) Празните работни листове се изключват автоматично;
  • 4) Оригиналното име на файл ще бъде добавено като префикс към името на листа след сливането;
  • За повече функции на тази функция, моля посетете тук.

  Ако искате да имате безплатен пробен период (30 дни) на тази помощна програма, моля, щракнете, за да го изтеглитеи след това преминете към прилагане на операцията съгласно горните стъпки.


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

Comments (146)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
I have one workbook with 100+ sheets, I want to move all 100+ sheets into another workbook in a single sheet.
This comment was minimized by the moderator on the site
I had to read throught the comments to find suggestions that worked for my application of the VBA CODE 2, but I managed to get it to work doing the following things:
1. make sure to change "C:\Users\DT168\Desktop\KTE\" to your own directory to wherever you have your files are located. don't forget the extra "\" at the end!2. my spreadsheets were extension ".xls", so I deleted the extra "x" in this line, like so: xStrFName = Dir(xStrPath & "*.xlsx")3. I placed all my spreadsheets in a single folder, and only those files were the contents of that folder, the target macro enabled spreadsheet where this vba was running from was saved outside of this folder (hopefully this makes sense).
one thing that I didn't want to mess with though is I only needed to merge the 1st tab of each spreadsheet, but I didn't want to mess with the code so if each workbook you want to merge into one has multiple tabs, this code will grab all of the tabs on each workbook and place them in your target spreadsheet, I had to manually delete all the tabs I didn't want.
if the author of this vba could reply to me, how do you change the code to just copy the 1st tab as opposed to all the tabs?
thank you!
This comment was minimized by the moderator on the site
hi I want a change. If the the sheet name is same then the data should be appended in the same name sheet rather than adding a sheet. for example if i have 10 files with jan, feb, mar same sheetnames. then result should be 1 file having jan, feb, mar only 3 sheets with the data of all 10 files. thanks
This comment was minimized by the moderator on the site
Good morning,

Basically I have to copy the values of another file example c: \ test.xlsx (sheet name "date"):

I have to copy the values from A2: T20


And I have to paste in another Extract.xlsx file on the “Extracts” folder on A2.


PLEASE NOTE: You must run vba when opening the file.
This comment was minimized by the moderator on the site
Hello! I need to merge multiple files into one, that are password protected. All source files use the same password. What changes are needed to the first VBA script to merge the files without having to enter the password each time?
This comment was minimized by the moderator on the site
Hello any one can help me, I want to combine sheet 2 only from 5 different sheet, can you script for me.
This comment was minimized by the moderator on the site
you can use Array function to copy the multiple sheets to combine in one file
Sheets(Array("Sheet1","Sheet2")).copy
This comment was minimized by the moderator on the site
hai sir i want know code for copying multiple sheets in one excel to multiple excels
This comment was minimized by the moderator on the site
Sheets(Array("Sheet1","Sheet2")).copy
This comment was minimized by the moderator on the site
hai sir i want know code for copying multiple sheets in one excel to multiple excels
This comment was minimized by the moderator on the site
how to use VBA code 1 to amend and make it runs to combine all the .xlsx files into one excel file and each excel spreedsheet tab in the combined excel file should be named as original file name.thanks
This comment was minimized by the moderator on the site
What part of VBA code 3 specifies the name of the worksheet to be copied?
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations