将多个Excel 文件合并到一个Excel 一个sheet 中

1 篇文章 0 订阅

1 Alt+F11 打开VBE ,点击插入->模块,插入新模块

2 将多个文件 放在一个文件夹下,F5 运行

Option Explicit

 

Sub HzWb()

    Dim bt As Range, r As Long, c As Long

    r = 1    'r是表头的行数

    c = 15    'c是表头的列数,根据表头数据更新

    Dim wt As Worksheet

    Set wt = ThisWorkbook.Worksheets(1)    '将汇总表赋给变量wt

    wt.Rows(r + 1 & ":1048576").ClearContents  ' 清除汇总表中原表数据,只保留表头

    Application.ScreenUpdating = False ' 防止页面刷新

    Dim FileName As String, sht As Worksheet, wb As Workbook

    Dim Erow As Long, fn As String, arr As Variant

    FileName = Dir(ThisWorkbook.Path & "\*.csv")

    Do While FileName <> ""

        If FileName <> ThisWorkbook.Name Then        ' 判断文件是否是汇总数据的工作簿

            Erow = wt.Range("A1").CurrentRegion.Rows.Count + 1     ' 取得汇总表中第一条空行行号

            fn = ThisWorkbook.Path & "\" & FileName     '将第1个要汇总的工作簿名称赋给变量fn

            Set wb = GetObject(fn)        ' 将变量fn 代表的工作簿对象赋给变量wb

            Set sht = wb.Worksheets(1)    ' 将要汇总的工作表赋给变量sht

            ' 将工作表中要汇总的记录保存在数组arr里

            arr = sht.Range(sht.Cells(r + 1, "A"), sht.Cells(1048576, "B").End(xlUp).Offset(0, c))

            ' 将数组arr 中的数据写入工作表

            wt.Cells(Erow, "A").Resize(UBound(arr, 1), UBound(arr, 2)) = arr

            wb.Close False

        End If

        FileName = Dir    ' 用Dir 函数取得其他文件名,并赋给变量

    Loop

    Application.ScreenUpdating = True

End Sub

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值