VBA合并文件夹下多个文件并提取每个文件的文件名
一、问题
为了整合成一个完整的Excel表格且格式与内容保持一致,在数据量较大时不宜直接操作而应考虑使用VBA程序来解决这一问题。

图1 同一个文件夹下的多个excel文件
二、代码
Sub 打开文件夹下所有文件并复制制定内容()
定义n为起始行号(单位为长整型),并定义Num为文件计数器(最好设为长整型以防止溢出)
定义h为字段名以下的内容行数
定义mypath为空字符串
初始化t = Timer
设置ScreenUpdating属性为False以防止更新窗口
将当前工作簿路径赋值给mypath
调用Dir函数获取当前文件夹下所有.xls文件名
打开mypath下的所有.xls文件进行遍历操作
激活第一个工作表(Sheet0)
获取最大行号并赋值给i
复制从第A2单元格到第Pi列的数据到汇总表的第一个工作表中
将第Qi单元格至第Qi + i - 2列的内容赋值给当前数据块a
关闭临时工作簿
初始化计数器Num = 1
初始化命名变量名为左端前4个字符组成的子串
进入Do循环:
调用Dir函数获取当前目录下的所有非汇总.xlsm文件
如果存在其他非汇总.xlsm文件:
打开mypath\*a的工作簿
根据汇总表中最后一行的位置获取当前数据块的末尾行号n
激活当前数据块的工作表(Sheet0)
获取最大行号并赋值给i
复制从第A2单元格到第Pi列的数据到汇总表的第n行首列位置
将第Qn单元格至第Qn + i - 2`列的内容赋值给a`
关闭临时工作簿
增加计数器并更新命名变量名为左端前4个字符组成的子串
否则:
显示合并完成提示消息框,并计算总耗时后退出程序结束循环
