【跟我学Excel VBA】第七课:重磅!!Excel多文件汇总
昨天介绍了多工作表汇总,多文件汇总其实也是汇总每个文件中的工作表,所以,今天对工作表汇总部分将直接以代码呈现,如果大家对过程不熟悉的话,请参照昨天的课程!!
那么,今天将至少有两个学习重点:
1、怎样找到指定目录下的每一个文件?
2、怎样打开找到的每一个文件?
下面,我们来各个击破!
第一部分,找文件:
Dir 函数的简单应用:首先,我们来看以下代码

也许你会问,Dir函数有什么用,他的语法是怎样的。如果你看了我们的第一课,也许会明白,我们是以实战进行培训的,那些什么语法的见鬼去吧!!

代码解析:
1、表示某目录下的某文件,用字符串:【“d:\abc.gif”】表示,即盘符+文件夹+文件名(含后缀);
2、用Dir表示某文件是否存在时,会产生两个结果:如果文件存在,将显示文件的完整名(目录+文件全名<含后缀>);如果文件不存在,将返回一个空字符串;
有一个问题存在,而且这个问题相当大!!

嘿嘿!
文件夹里面的文件个数,我们在访问的时候也是遍历的方式,通俗一点来说,就是使用循环。
那么,我们怎么知道一个文件夹里面有多少个文件呢。前面通过几章对循环的学习,我们知道了For Next循环都是建立在知道了要循环多少次的情况下,可是一个文件夹里面的文件有多有少,用For Next循环显示已经不合适了。
这个时候,我们适时推出了另一种循环方式,Do … Loop Until循环。
因为,我们今天不是讲循环的,而是将文件的汇总,所以,我们直拉上代码!

代码解析:
1、Dir(strPath & “*.xls*”),表示找后缀包含“.xls”的所有文件,包括 xls、xlsx、xlsb、xlsm等等;
2、在循环之前,我们将会找到第一个文件;
3、strFileName=Dir,固定语法,寻找下一个符合条件的文件;如果缺省,将会进入死循环!!!

第二部分:文件的打开
Excel文件的打开,我们可以用固定语法:
Workbooks.Open(文件完整名)
在实际应用中,我们还要定义一个变量,来表示这个打开的文件,我们称之为对象变量,请看以下代码。

代码解析:
Set wb=Workbooks.Open(strPath & strFileName)
固定语法,对象变量的赋值,我们使用的是 set 对象变量=对象
那这样的话,我们即有了找到全部的文件的办法,又有了打开文件的办法,那么,接下来我们正式进入我们的最后一步,多文件汇总。
第三部分:多文件的汇总
请看以下文件结构:

每个文件的内部结构:

汇总文件的构造:

从上面三个结构图中可以看出:
1、需要汇总的文件是1-12月的销售明细;
2、每个销售明细文件里面,是按地区存放的;
3、汇总的文件,都处于同一个目录下;
4、汇总模板,在目录的外层;
5、需要汇总的文件目录下, 不存在别的文件;
6、汇总的模板,除了原有的明细文件的标题之外 ,增加了月份和地区字段;
下面,正式进入今天的正题:

请看以下代码:

以下是结果:

代码解析:
1、Val(strFileName)表示的是提取字符串前面的数字,这个比工作表函数的用法简单多了;
2、wb.Close False表示关闭文件,并且不保存;汇总的文件太多,如果你不关闭,会大大影响内存的。
其他代码,差不多已经解释过了。
写了这么多,如果你还没有习惯动手去试一下的话,年底的文件汇总,你就找代工吧!!
夜雨聆风