【VBA代码】-汇总同一文件夹下相同表头的工作簿

 1 Option Explicit
 2 
 3 Public Sub 汇总工作簿()
 4     Dim  r As Long, c As Long
 5     r = 1 '表头行数
 6     c = 8 '表头列数
 7     Range(Cells(r + 1, "A"), Cells(65536, c)).ClearContents '清除汇总表里的原始数据
 8     Application.ScreenUpdating = False
 9     Dim filename As String, wb As Workbook, erow As Long, fn As String, arr As Variant, sht As Worksheet
10     filename = Dir(ThisWorkbook.Path & "\*.xls") '指定文件夹(即此工作簿所在的文件夹)中的第一个Excel文件名称
11     Do While filename <> ""
12         If filename <> ThisWorkbook.Name Then
13             erow = Range("A1").CurrentRegion.Rows.Count + 1 '取得汇总表内第一个空行行号
14             fn = ThisWorkbook.Path & "\" & filename '此时的文件所在路径
15             Set wb = GetObject(fn) '激活fn所表示工作簿的对象
16             Set sht = wb.Worksheets(1)
17             arr = sht.Range(sht.Cells(r + 1, "A"), sht.Cells(65536, "A").End(xlUp).Offset(0, c - 1)) '将数据区域中的记录保存到数组arr中
18             Cells(erow, "A").Resize(UBound(arr, 1), UBound(arr, 2)) = arr '将数组的值写入到汇总表中
19             wb.Close False '关闭活动工作簿
20         End If
21         filename = Dir '取下一个文件名
22     Loop
23     With Range("A1").CurrentRegion.Font '汇总完成后,批量设置工作表的字体格式
24         .Name = "微软雅黑"
25         .Size = 12
26         .Color = RGB(0, 0, 0)
27     End With
28     Application.ScreenUpdating = True
29 End Sub

笔记:Ubound(arr,1)得到数组arr的最大行数;Ubound(arr,2)得到数组arr的最大列数

posted on 2018-08-08 14:44  而我知道22  阅读(1330)  评论(0)    收藏  举报

导航