excel 批量合并多个sheet的数据

Sub Run()
  Dim tar_wb As Workbook
  Set tar_wb = CreateWorkbook
  Call MergeContent(tar_wb)
End Sub

'函数名: CreateWorkbook
'接受参数:无
'返回值:Workbook(返回创建的Workbook)
'说明:创建一个Excel文件,存放合并的数据
Private Function CreateWorkbook() As Workbook
  Dim fileName As String
  Dim filePath As String
  Dim nowDate As String
  
  nowDate = CDate(Now())
  nowDate = Replace(nowDate, ":", "")
  nowDate = Replace(nowDate, "/", "")
  nowDate = Replace(nowDate, " ", "_")
  
  filePath = ThisWorkbook.path & "\"
  fileName = filePath & nowDate & "_汇总表.xlsx"
  
  
  Dim newBook As Workbook
  Set newBook = Workbooks.Add
     
  With newBook
   .SaveAs fileName
  End With
  
  Set CreateWorkbook = newBook
End Function

'函数名: MergeContent
'接受参数:targetWorkbook(合并后的数据存放的Workbook对象)
'返回值:无
'说明:将数据依次粘贴到目标Workbook对象、即EXCEL中。
Private Function MergeContent(targetWorkbook As Workbook)
  Sheet1.Range(Sheet1.Cells(1, 1), Sheet1.Cells(1, 1).End(xlToRight)).Copy _
                    targetWorkbook.Sheets("Sheet1").Range("A65536").End(xlUp)
  For Each sht In ThisWorkbook.Worksheets
    sht.Range("A1").CurrentRegion.Offset(1, 0).Copy _
                    targetWorkbook.Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0)
  Next
  targetWorkbook.Close True
End Function

这里写了2个函数,

函数Creatworkbook创建新的EXCEL,存放合并后的数据。

函数MergeContent循环每一个Sheet,然后把内容复制到新创建的EXCEL中。

命名采用日期+时间+汇总表的命名方式。

如果源数据有变,重新运行一下代码就可以,没有任何其他的条件。

大家可以看一下动图:

excel 批量合并多个sheet的数据