多个excel文件如何快速合并到一个excel中


http://jingyan.baidu.com/article/f0062228d16ba9fbd3f0c82b.html

多个excel文件如何快速合并到一个excel中


'汇总各工作簿数据到汇总表中


Sub 汇总多工作簿()
    Dim r As Long, c As Long, str As String, sht As Worksheet
    
    '定义r,c为长整型
    r = 2
    '赋值r初值为2
    Application.ScreenUpdating = False    '屏幕闪烁关闭
    Dim filename As String, wb As Workbook, Erow As Long
    '定义filename 为文本型,wb 为 工作簿,sht为工作表,Erow 为长整型
    Dim fn As String, Arr As Variant
    'on error resume next
    On Error GoTo VeryEnd
    '程序中出现语句等运行错误时,程序跳跃到后面  VeryEnd行
    filename = Dir(ThisWorkbook.Path & "\*.xlsx")    '对文件夹内的工作簿进行循环,循环查找的格式  *.xls
    ' MsgBox filename
    Do While filename <> ""
        '对文件夹内的工作簿进行循环,截止到最后一个工作簿
        If filename <> ThisWorkbook.Name Then
        '判断文件是否是本工作簿
        'else
            '  Erow = Range("A1").End(xlDown).Row   '取得汇总表中第一条空行行号
            '  MsgBox "erow=" & Erow
            fn = ThisWorkbook.Path & "" & filename    '取得循环符合条件工作簿的  文件夹地址,赋值给fn 这个变量
            ' MsgBox "现在汇总的工作簿是fn= " & fn
            Set wb = GetObject(fn)
            '将fn代表的工作簿对象赋给变量
            Set sht = wb.Worksheets(1)
            'range,cells
            '汇总的是第1张工作表
            Arr = sht.Range("a2:m" & sht.Range("a2").End(xlDown).Row)            '将结果存放在定义好的数组arr中
            c = UBound(Arr, 1)
            ' MsgBox "现在汇总的工作簿行数= " & c
            '将数组arr中的数据写入工作表
            Range("a" & r).Resize(UBound(Arr, 1), UBound(Arr, 2)) = Arr           '将目标结果存放在目标工作表中特定的区域
            r = r + c
            '  MsgBox "现在汇总到的行数是:" & r
            wb.Close False
        End If
        filename = Dir      '进行下一步的循环
    Loop
VeryEnd:
    Application.ScreenUpdating = True
    '屏幕闪烁打开

End Sub

########################################################################################################################

Dim r As Long, c As Long, str As String, sht As Worksheet, brr(1 To Rows, 1 To 1)

########################################################################################################################



'汇总各工作簿数据到汇总表中

Sub 汇总多工作簿()
    Dim r As Long, c As Long, str As String, sht As Worksheet, brr(1 To 10000, 1 To 1)
    
    '定义r,c为长整型
    r = 2
    '赋值r初值为2
    Application.ScreenUpdating = False    '屏幕闪烁关闭
    Dim filename As String, wb As Workbook, Erow As Long
    '定义filename 为文本型,wb 为 工作簿,sht为工作表,Erow 为长整型
    Dim fn As String, Arr As Variant
    'on error resume next
    On Error GoTo VeryEnd
    '程序中出现语句等运行错误时,程序跳跃到后面  VeryEnd行
    filename = Dir(ThisWorkbook.Path & "\*.xlsx")    '对文件夹内的工作簿进行循环,循环查找的格式  *.xls
    ' MsgBox filename
    Do While filename <> ""
        '对文件夹内的工作簿进行循环,截止到最后一个工作簿
        If filename <> ThisWorkbook.Name Then
        '判断文件是否是本工作簿
        'else
            '  Erow = Range("A1").End(xlDown).Row   '取得汇总表中第一条空行行号
            '  MsgBox "erow=" & Erow
            fn = ThisWorkbook.Path & "" & filename    '取得循环符合条件工作簿的  文件夹地址,赋值给fn 这个变量
            ' MsgBox "现在汇总的工作簿是fn= " & fn
            Set wb = GetObject(fn)
            '将fn代表的工作簿对象赋给变量
            Set sht = wb.Worksheets(1)
            'range,cells
            '汇总的是第1张工作表
            
            Arr = sht.Range("a2:m" & sht.Range("a2").End(xlDown).Row)            '将结果存放在定义好的数组arr中
            c = UBound(Arr, 1)
            For i = 1 To c
                brr(i, 1) = filename
            Next
            ' MsgBox "现在汇总的工作簿行数= " & c
            '将数组arr中的数据写入工作表
            Range("b" & r).Resize(UBound(Arr, 1), UBound(Arr, 2)) = Arr           '将目标结果存放在目标工作表中特定的区域
              Range("a" & r).Resize(UBound(Arr, 1), 1) = brr
              Erase brr
            r = r + c
            '  MsgBox "现在汇总到的行数是:" & r
            wb.Close False
        End If
        filename = Dir      '进行下一步的循环
    Loop
VeryEnd:
    Application.ScreenUpdating = True
    '屏幕闪烁打开

End Sub


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值