VBA:合并同一文件夹下的所有表
2016-12-05 17:56
1066 查看
一、代码需求
同一文件夹下由n多表,且表的格式相同,需要将表合并在一张表中,以方便统计。二、代码示例
Sub 合同同一文件夹下的所有表() Dim r As Long, c As Long r = 1 c = 3 'c的值是为了控制有几列,可以根据实际情况调整 Range(Cells(r, "A"), Cells(65536, c)).ClearContents '合并前先清空所在表 Application.ScreenUpdating = False Dim filename As String, wb As Workbook, sht As Worksheet, erow As Long, fn As String, arr As Variant, flag As Integer filename = Dir(ThisWorkbook.Path & "\*.xls") '获取该文件夹下的所有表的表名 flag = 1 Do While filename <> "" If filename <> ThisWorkbook.Name Then '为了避免合并的总表自己调用自己 If flag = 1 Then erow = 1 Else erow = Range("A1").CurrentRegion.Rows.Count + 1 '为了找出要粘贴到汇总表的位置 End If fn = ThisWorkbook.Path & "\" & filename Set wb = GetObject(fn) '在后台打开一张表 Set sht = wb.Worksheets(1) '只合并该工作簿中的第一张表 If flag = 1 Then '该flag是为避免重复复制表头而设置 arr = sht.Range(sht.Cells(r, "A"), sht.Cells(65536, "B").End(xlUp).Offset(0, 9)) 'arr找到要复制的区域,运行此句时含表头 Else arr = sht.Range(sht.Cells(r + 1, "A"), sht.Cells(65536, "B").End(xlUp).Offset(0, 9)) 'arr找到要复制的区域,运行此句时不含表头 End If Cells(erow, "A").Resize(UBound(arr, 1), UBound(arr, 2)) = arr 'UBound(arr, 1)计算出行数,UBound(arr, 2)计算出列数 wb.Close False '将刚才打开的表关闭 End If filename = Dir '运行此句时filename获取下一个表的表名 flag = 2 Loop Application.ScreenUpdating = True End Sub
三、运行结果
四、说明
程序运行的汇总表需和其他的表在同一个文件夹内;表格格式相同,合并的效果最好,不过表的格式即便不同,也可以合并,具体结合使用环境。
相关文章推荐
- [R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。
- VBA中如何打开一个文件夹内的所有EXCEL文件?
- (表格)vba如何打开一个文件夹下所有xls文件
- VBA遍历所有文件夹的两种方法(filesearch和FileSystemObject)
- Python实现合并同一个文件夹下所有PDF文件的方法示例
- vba 宏获取文件夹中所有excel文件,对slk文件数据每3000个求平均值
- 一起学shell(一):合并文件夹下所有文件
- VBA合并文件夹下多个文件并提取每个文件的文件名
- hdfs中将文件夹下所有.bz2文件进行解压并且合并,然后传到本地
- 如何使用PowerBI将文件夹的内容中的所有文件合并为一张表进行统计
- VBA读取文件夹下所有文件夹及文件内容,并以树形结构展示
- Python实现合并同一个文件夹下所有txt文件的方法示例
- [置顶] 【python PDF合并】python 合并同一个文件夹下所有PDF文件
- 合并同一个文件夹中的所有相同的文件
- VBA获取某文件夹下所有文件和子文件目录的文件
- Java 合并 PDF(读取指定文件夹下所有 PDF)
- Java合并一个文件夹下所有txt文件
- C++ 合并文件夹下所有的txt文件
- 遍历文件夹内所有文本文件,查找含有某种模式的行,合并到一个文件
- python实现将文件夹内所有txt文件合并成一个文件