wzh313

将多个工作簿合并到同一个工作表,其中每个工作簿中有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

 

分类:

技术点:

相关文章: