将多个工作簿合并到同一个工作表,其中每个工作簿中有1-n个工作表。
背景色、字体、合并单元格(横向、纵向)、公式等都保持不变。
代码如下:
Sub 合并工作薄() On Error Resume Next Dim SummarySheet As Worksheet \'汇总表 Dim SelectedFiles() As Variant \'选择的文件集合 Dim Nrow As Long Dim FileName As String Dim NFile As Long Dim WorkBk As Workbook Dim SourceRange As Range Dim DestRange As Range Set SummarySheet = ThisWorkbook.Worksheets(1) SelectedFiles = Application.GetOpenFilename(filefilter:="Excel 文件(*.xl*),*.xl*", MultiSelect:=True) Nrow = 1 For NFile = LBound(SelectedFiles) To UBound(SelectedFiles) FileName = SelectedFiles(NFile) Set WorkBk = Workbooks.Open(FileName) \'打开工作簿 \'MsgBox "1:目标工作簿名称【" & WorkBk.Name & "】,共有" & WorkBk.Sheets.Count & "个工作表" For NS = 1 To WorkBk.Sheets.Count \'遍历工作簿下的所有工作表 Set SourceRange = WorkBk.Worksheets(NS).UsedRange \'设置源工作簿中的第NS个工作表的使用区域(连续) Set DestRange = SummarySheet.Range("A" & Nrow) \'设置汇总工作表开始单元格(用于粘贴) Set DestRange = DestRange.Resize(SourceRange.Rows.Count, SourceRange.Columns.Count) \'获取目标区域的大小(行、列),从A&Nrow开始 SourceRange.Copy DestRange \'DestRange.Value = SourceRange.Value Nrow = Nrow + DestRange.Rows.Count Next WorkBk.Close savechanges:=False Next SummarySheet.Columns.AutoFit End Sub