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

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

529d4f32702cd0e7777b35afeb6fb8c0.png

前景提要

在上一篇,我们知道如何通过vba打开指定的excel文件了,但是在实际的工作中,我们发现情况并没有我们想象的那么简单,比方老板快下班的时候说要做公司日报汇总,恰好今年行业市场不错,业绩也挺好,公司也是招募了不少的人手,人多好办事嘛,但是呢,这个情况反而让你为难了,你会发现,一个文件夹有好多文件,10+还好,但是你一个部门起码有20+,加上其他分公司的,起码100+,让你一个个的打开文件,然后复制粘贴。。。。。想想都恐怖啊,换成我,估计直接跑到公司顶楼跳下去了,不过别慌,我们不是有VBA嘛,那么VBA可以实现这样的效果嘛?

既然我这样说了,那肯定是可以的啦(废话),现在不是都说“科学技术是第一生产力”,一点都没错,虽然VBA算不上什么高大上的科学技术,只是一个非常简单的脚本语言,但是至少人家能够解决我们人力需要花费很长时间才能解决的问题嘛,废话有点多了,so,开工

思路

之前我们说过,VBA实现的逻辑,和我们实际手工操作是一样的,在本例中,我们先去指定的文件夹,然后打开,然后一个一个的打开excel文件,复制粘贴,然后关闭文件,再打开下一个。。。。。好了,再说下去我都觉得有点啰嗦了,上代码

上代码

这里假设我们的目标文件在D盘的新建文件夹下

Sub test()Dim FileName$FileName = "D:新建文件夹"f = Dir(FileName & "")Do While f <> 0 Workbooks.Open FileName & "" & f f = Dir() Workbooks.CloseLoopEnd Sub

代码如上

代码解析

首先我们指明文件夹的位置,FileName代表的就是文件夹的位置,然后我们这里使用了dir函数,熟悉前面的内容的童鞋,应该还记得我们之前在创建文件夹的时候,使用了mkdir(),这两个函数非常的相似,mkdir()是创建文件夹的,而dir()是遍历文件夹的,既然知道了dir()的作用,那么第4行就好理解了,

f = Dir(FileName & "")

就是遍历我们指定的文件夹的意思

7f757b7d0dcb79dcffa692050707cf59.png

然后我们接着往下看,这里我们使用了一个do loop循环语句,这里的作用就是dir在遍历的时候,如果找不到文件之后,他会返回一个空值,这里我们只需要判断返回的结果f是否为空,就知道循环是否结束了,如果循环结束了,那么就可以跳出循环了。

这里还有一个语法知识点,在do循环中遍历的时候,f = Dir()这里是不需要再加上具体的参数的,这点要留意,否则他永远都是循环打开第一个工作表。陷入死循环。

Do While f <> 0 Workbooks.Open FileName & "" & f f = Dir() Workbooks.Close

这里我们按下F8进入调试功能看看f是多少

11124005eb4cfa13d95e24ee45c55eca.png

这里我们可以看到f已经有结果了,成功的定位到了第一个文件,但是我们注意到,他只是一个文件夹的名字,要打开一个文件,我们上一次说了,需要完整的路径,所以这里我们需要重新构造一个完整路径,即:FileName & "" & f,如果还是不清楚,我们在看看结果

bfb9151fe348977c296e31c8176d41ec.png

这样才算是完整路径,有了这个完整路径之后,我们就可以执行打开的操作了,打开操作上次已经分享了,这次我们顺带说下关闭的 操作,即Workbooks.Close

完整代码+注释

Sub test()Dim FileName$FileName = "D:新建文件夹" '指定文件夹的位置f = Dir(FileName & "") '循环开始Do While f <> 0 '判断f的值,如果不是空,证明循环还没有结束 Workbooks.Open FileName & "" & f '构造完整的路径并执行打开操作,下面你可以继续写其他的功能 f = Dir() '继续找下一个文件 Workbooks.Close '关闭已经打开的文件LoopEnd Sub

OK了,通过上面的代码,就可以成功执行遍历同一个文件内的所有的文件的操作了,你可以根据自己的需要加上复制粘贴等相关的操作,很快就可以完成老板交代的任务了,能够节省我们很多的时间,想要准时下班,回家看球赛,陪伴家人,抓紧时间和我一起学些VBA吧。

本人已经打算长期分享一些网络搜集的各种VBA知识,如果大家有问题也可以提出来共同解决,一起进步,毕竟VBA的世界还是很大的。

因为基本上都是自学的,很多代码和知识都是来源于网络的,如果在分享的过程中,正好拿了某位大神的代码,请告诉我,我将标注代码来源出处,也方便大家学习分享,谢谢!

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

Excel VBA——文件夹的相关操作(1)

Excel VBA和文件夹-1.2.1创建文件夹注意事项

Excel VBA和文件夹-1.2.2创建文件夹注意事项

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

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

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