分享

悟空问答

 whoyzz 2019-02-12

下面提供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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多