下面提供VBA的另外一种写法。您只需要打开自己需要合并的EXCEL,把代码粘贴到visual basic编辑器中。代码就会自动将各个Sheet的内容合并到一张表里。并且会新建一个EXCEL存在在该源文件的同级目录下。命名采用日期+时间+汇总表的命名方式。如果源数据有变,重新合并一下就可以,没有任何其他的条件。比较方便。可以先看下我录的动图:
直接使用请粘贴如下的代码:
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
代码贴上来真得好丑,强烈建议悟空问答优化一下。。T T
联系客服