【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的最大列数
浙公网安备 33010602011771号