vb遍历文件夹中的所有文件_Excel VBA和文件夹-1.6遍历文件夹打开指定格式的文件...

Excel VBA和文件夹-1.6遍历文件夹打开指定格式的文件

前景提要

之前我们学会了如何通过dir()来遍历文件夹并打开文件的方法,当你文件中有很多相同格式的文件要汇总的时候,就可以考虑采用这个方法了,不过实际工作中,我们总是会碰到很多种非常规的的问题,还是假设我们现在正在汇总文件夹中的数据,当我们使用上节我们学的dir()函数的时候, 会发现有些文件并不是excel文件,是一个图片,甚至是txt文件都有,原来有些人为了图方便,直接放在txt或者截个图完事,这种数据是需要经过二次处理的,直接拿过来汇总是不可能的,那么dir()能不能够指定就汇总某种类型的文件呢?

自然是可以的,这里采用的方法是类似正则的模糊匹配的方法

思路

老规矩,我们还是想象下,如果是我们人工操作的话,是如何区分的呢?很简单,看看文件结尾的格式就知道了,就是*****.xlsx这后面的.xlsx,前面我们说了,这里我们采用类似正则的模糊匹配的方法(正则的具体用法后面会阐述,这里只需要了解当前场景下的使用方法就好),好了,可以上代码了。

上代码

这里假设我们的目标文件在D:新建文件夹-dir的目录下,我们看看测试文件夹下面有各种不同的文件

5518e85ebe98745b514d989bc7ff199b.png
Sub test()Dim FileName$FileName = "D:新建文件夹-dir"f = Dir(FileName & "" & "*.xlsx")Do While f <> "" Workbooks.Open FileName & "" & f Debug.Print f f = Dir() ActiveWorkbook.Close True Loop End Sub

为了更好的展示运行的效果,我们在测试代码的时候,注销掉了打开和关闭的命令,每找到一个文件就输入文件的路径,这样就可以更加清楚的知道实际运行的效果了,结果如下图:

74996824cbedf86a4fad003edbb949e0.png

代码解析

FileName得到的就是文件夹的路径,这个我们在之前就已经解释过了,然后来看看下一行

f = Dir(FileName & "" & "*.xlsx")

这段代码和我们上一次的很像,确实是,非常像,仅仅是在后面增加了一点判断而已,这个判断就是*.xlsx,作用就是判断文件是以.xlsx结果的,就是office文件,这样程序仅仅会去打开报表文件,而其他的无关文件或者是需要我们二次汇总的文件,都不会干扰本次程序的执行,完美的达到了我们的目的。

为了更加清楚的说明效果,下面我们来调试下程序,这样能够更加清楚明白程序运行的过程,按下F8,进入调试

56f6540d5c79f9a49be5335b900ca320.png

我们可以看到程序直接去寻找那些文件名是.xlsx的文件,而不会去碰其他类型的文件,这样很好的节省了我们的时间,也提升了效率,最终得到的结果,就是上面我们展示的那样了。

其实,VBA不仅仅可以打开和操作报表文件,其实它还可以操作txt文件,那么如何打开txt文件,如何操作txt文件呢?这些悬念大家可以先研究下,后面我们讲到VBA操作文本文件的时候,再和大家详细说明。

完整代码+注释

Sub test()Dim FileName$FileName = "D:新建文件夹-dir" '指定文件夹路径f = Dir(FileName & "" & "*.xlsx") '指定要遍历的文件类型,以.xlsx结果,也可以换成.xls(07版本的文件)Do While f <> "" '便利开始 Workbooks.Open FileName & "" & f '打开 'Debug.Print f f = Dir() '循环下一个文件 ActiveWorkbook.Close True '关闭当前打开的文件LoopEnd Sub '结束程序

通过上述的例子,我们可以发现VBA还是非常的灵活和强大的,毕竟VBA本身是window开发出来的脚本语言,虽然有局限性,但是在文件本身的处理上面还是非常的强大的,平时需要花费很多时间的事情,写好了VBA之后,点几下鼠标就可以搞定了,简直就是办公职场必备之良药啊。

本人已经打算长期分享一些网络搜集的各种VBA知识,如果大家有问题也可以提出来共同解决,一起进步,毕竟VBA的世界还是很大的。因为基本上都是自学的,很多代码和知识都是来源于网络的,如果在分享的过程中,正好拿了某位大神的代码,请告诉我,我将标注代码来源出处,也方便大家学习分享,谢谢!

=============================传送门==============================

Excel VBA和文件夹-1.3创建当天日期命名的文件夹

Excel VBA和文件夹-1.4打开文件夹内excel文件的方法

Excel VBA和文件夹-1.5遍历文件夹并打开

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页