合并多个工作薄为一个工作薄下的多个工作表

Sub 汇总多个工作表()

‘定义对话框变量

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(tempwb.Name, “.xls”, “”)

‘关闭被合并工作簿

tempwb.Close SaveChanges:=False

i = i + 1

Next vrtSelectedItem

End If

End With

Set fd = Nothing

End Sub

本文是全系列中第4 / 9篇:Excel
上一篇 合并当前目录下所有工作簿
下一篇 一个工作薄按照固定数量分割成N个工作薄