实用VBA:7.按文件列表一键汇总excel工作簿

        前面介绍了通过打开文件的对话框,选择目录进行多文件一键汇总的方法,也介绍了使用VBA提取文件存储路径和文件名的方法。如果大量的表格文件分别存储在分散的不同目录下,前面介绍的汇总的方法就不太好用了。虽然也可以将分布在不同目录下的文件使用批处理命令复制汇总到同一目录下,再用第一个汇总的方法进行文件表格多合一的汇总。但毕竟有些繁琐。在提取文件列表之后,即可按列表逐一打开文件进行复制汇总。

1.需求场景

有多个相同格式的数据表文件需要汇总到一起。汇总之后可以实现将单独保存在大量文件中的表文件复制到同一个文件中,即可通过切换表格的方式分别查看各个表中的内容,而不必一遍遍打开、关闭文件。

2.解决思路

用前面介绍过的办法提取需要处理的文件列表,使用循环语句遍历每个文件,逐一打开文件,复制表格内容到当前文件,关闭临时文件。

3.VBA实现

    Dim wb, wbtmp, wbNew As Workbook

    Dim ws, sh, wsNew As Worksheet

    Dim startLine, endLine, iLine, i, j, k, n As Integer

    Dim openFile, filePath, fileName As String

    Dim last_row As Integer

    

Public Sub 多文件汇总()

    '设置工作簿变量为当前工作簿

    Set wb = Workbooks(1)

    wb.Activate

    '设置工作表为保存待汇总文件路径和文件名的表格

    Set ws = Worksheets("文件列表")

    ws.Activate

    '设置汇总文件在列表中的起始行和结束行当行号,即汇总范围

    startLine = 2

    endLine = 13

    '关闭屏幕刷新

    Application.ScreenUpdating = False

    '循环打开文件进行汇总(复制)

    For iLine = startLine To endLine

        wb.Activate

        Set ws = Worksheets("文件列表")

        ws.Activate

        '从文件列表中获取当先要处理的文件的路径和文件名。

        filePath = ws.Cells(iLine, 1).Value

        fileName = ws.Cells(iLine, 2).Value

        '拼接要打开文件的完整路径

        openFile = filePath & fileName

        '设置临时工作簿对象为打开的文件

        Set wbtmp = GetObject(openFile)

        '设置工作表为打开文件的第一个工作表

        Set sh = wbtmp.Worksheets(1)

        '将打开文件的第一个工作表复制到文件列表所在文件中,复制到当前所有表之后的位置

        sh.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

        '关闭临时文件

        wbtmp.Close savechanges:=True

        '输出调试信息,监控汇总进度

        Debug.Print "文件" & iLine & ": " & Right(openFile, Len(openFile) - InStrRev(openFile, "\")) & " 汇总完成。"

    Next iLine

    '打开屏幕刷新

    Application.ScreenUpdating = True

    '释放工作表和工作簿变量

    Set ws = Nothing

    Set wb = Nothing

    Set sh = Nothing

    Set wbtmp = Nothing

    '输出提示信息

    MsgBox "数据汇总完成。"

End Sub

4.实现效果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值