如何在vba中用dir函数遍历文件夹和文件?

在用vba编写自动化解决方案时,最常见的需求就是遍历文件夹内的文件,然后进行相对应的处理。

在vba中,内置了Dir函数可以返回模糊查找匹配的文件夹或文件名称。在vba中使用Dir函数可以实现遍历文件夹和文件的需求。

今天就让我们一起来学习下如何用dir函数遍历文件夹和文件,今天的主要内容有以下几个:

  1. Dir函数的使用说明
  2. 用Dir函数判断文件夹或文件是否存在
  3. 用Dir函数遍历文件夹下的所有文件

一、Dir函数的使用说明

Dir函数可以返回一个字符串,这个字符串表示的是文件夹的名称或文件的名称。

Dir函数的语法如下:

Dir[(pathname[, attributes])]

其中pathname参数表示要返回的文件或文件夹所在的路径,该参数可以使用*和?作为通配符进行模糊查找。

attributes参数表示指定要返回的文件或文件夹的属性。

attributes参数可以选择以下值或者以下值的和:

常量 说明
vbNormal 0 默认值,表示指定返回没有任何属性的文件
vbReadOnly 1 表示指定返回没有任何属性和具有只读属性的文件
vbHidden 2 表示指定返回没有任何属性和具有隐藏属性的文件
VbSystem 4 表示指定返回没有任何属性和具有系统属性的文件,该参数在苹果系统上无效。
vbVolume 8 表示指定返回指定路径的磁盘卷标,该参数在苹果系统上无效。
vbDirectory 16 表示指定返回没有任何属性的文件和文件夹
vbAlias 64 表示要查找的文件名是一个别名,该参数只在苹果系统上有效。

当attributes参数不指定时,表示返回没有任何属性的文件。

pathname参数指定的文件或文件夹找不到时,Dir函数返回一个0长度的空字符串””。

二、用Dir函数判断文件夹或文件是否存在

学习了Dir函数的使用说明,接下来让我们看看如何用Dir函数判断文件夹或文件是否存在。

1.判断文件夹是否存在

如下图所示:

D盘的数据文件夹下有很多文件和文件夹。

用如下的vba代码可以判断D盘的数据文件夹下是否有”2018年”文件夹存在。

2.判断文件是否存在

如下的vba代码可以判断D盘的数据文件夹下是否有”12月”的文件存在:

3.通用的判断文件或文件夹是否存在的自定义函数

根据上述两个判断文件夹和文件是否存在的代码,可以编写一个通用的自定义函数用于判断文件或文件夹是否存在,代码如下:

三、用Dir函数遍历文件夹下的所有文件

上文中我们介绍了如何用Dir函数获取单个文件夹或文件的名称,在更多的需求中,我们需要的是遍历所有的文件夹或文件。

Dir函数遍历文件夹下的所有文件的关键是多次使用dir函数。

第一次使用dir函数时需要提供pathname参数,如果找到了满足条件的文件,则返回文件名。

如果要继续查找下一个满足条件的文件,再次使用dir函数,此时不需要提供pathname参数和attributes参数。

循环使用,直到返回的字符串为空字符串时,表示没有满足条件的文件存在,遍历完毕。

比如用Dir函数遍历D盘的数据文件夹下的所有excel文件,可以使用如下的代码:

运行上述代码后返回的结果如下图所示:

四、总结

上文中我们分别从Dir函数的使用说明开始,介绍了dir函数的语法、以及如何用dir函数判断文件夹或文件是否存在,最后介绍了如何使用dir函数遍历某个文件夹下的所有文件。

但是没有介绍了如何遍历文件夹及其子文件夹下的所有文件

如果要遍历文件夹及其子文件中的文件,可以参考如何用vba遍历所有文件夹及其子文件夹?一文。

 

       

发表评论