当前位置:文档之家› 把多个Excel文件合并

把多个Excel文件合并

把多个Excel文件的第一个工作表合并到一个Excel文件(工作薄)里形成多个工作表

一、将多个excel文件导入到一个excel中,生成不同的工作表
用下面的VB代码,生成的工作表名是按原表名+1.2.3.4.5这样来的。
代码:

Sub CombineWorkbooks()
Dim FilesToOpen
Dim x As Integer

On Error GoTo ErrHandler
Application.ScreenUpdating = False

FilesToOpen = Application.GetOpenFilename(FileFilter:="MicroSoft Excel文件(*.xls),*.xls", MultiSelect:=True, Title:="要合并的文件")

If TypeName(FilesToOpen) = "Boolean" Then
MsgBox "没有选中文件"
GoTo ExitHandler
End If

x = 1
While x <= UBound(FilesToOpen)
Workbooks.Open Filename:=FilesToOpen(x)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
x = x + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
ErrHandler:
MsgBox Err.Description
Resume ExitHandler
End Sub


二、只能将每个文件第一个工作表复制在一个工作薄内:
代码:


'功能:把多个工作簿的第一个工作表合并到一个工作簿的多个工作表,新工作表的名称等于原工作簿的名称
Sub Books2Sheets()
'定义对话框变量
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)

'新建一个工作簿
Dim newwb As Workbook
Set newwb = Workbooks.Add

With fd
If .Show = -1 Then
'定义单个文件变量
Dim vrtSelectedItem As Variant

'定义循环变量
Dim i As Integer
i = 1

'开始文件检索
For Each vrtSelectedItem In .SelectedItems
'打开被合并工作簿
Dim tempwb As Workbook
Set tempwb = Workbooks.Open(vrtSelectedItem)

'复制工作表
tempwb.Worksheets(1).Copy Before:=newwb.Worksheets(i)

'把新工作簿的工作表名字改成被复制工作簿文件名,这儿应用于xls文件,即Excel97-2003的文件,如果是Excel2007,需要改成xlsx
newwb.Worksheets(i).Name = VBA.Replace(https://www.doczj.com/doc/3a15578252.html,, ".xls", "")

'关闭被合并工作簿
tempwb.Close SaveChanges:=False

i = i + 1
Next vrtSelectedItem
End If
End With

Set fd = Nothing
End Sub


三、将一个工作薄的多张工作表合并成一个工作表:
一般要求各个工作表格式相同


如何将EXCEL中同一个工作薄多张工作表合并
在你的当前工作簿下新建一个sheet然后你在这个sheet和标签处右键 查看代码(找不到的直接按一下alt+F11) 把下面 的代码复制进去 然后点

上面的运行 运行子程序就可以了


Sub 合并当前工作簿下的所有工作表()
Application.ScreenUpdating = False
For j = 1 To Sheets.Count
If Sheets(j).Name <> https://www.doczj.com/doc/3a15578252.html, Then
X = Range("A65536").End(xlUp).Row + 1
Sheets(j).UsedRange.Copy Cells(X, 1)
End If
Next
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"
End Sub


相关主题
文本预览
相关文档 最新文档