第一章 入门篇 1.25 Dir语句 Dir可以返回一个指定文件夹下的文件名称(包含后缀)。例如: filename = Dir('F:\VBA学习\') 这样,就会获得'F:\VBA学习'目录下的一个文件名,并把这个文件名赋值给filename变量。 需要注意的是,文件夹地址后面一定要加上'\',否则“VBA学习”会被当成一个文件名进行处理,而不是当成一个文件夹处理。 Dir运行一次只能得到一个文件名,为了得到下一个文件名,代码这样写: filename = Dir Dir后面不写任何参数,就可以获得'F:\VBA学习'目录下的另一个文件名称。这时候有人问了,为什么不能像原来那样filename = Dir('F:\VBA学习\')写呢?如果这样写,则会重新扫描'F:\VBA学习'文件夹,又会得到第一个文件名。 Dir配合do...loop循环语句,就可以得到一个文件夹下的所有文件名。以下是通用模板: sub 获取文件名() dim filename$ filename = Dir('F:\VBA学习\') do filename = Dir loop until filename='' end sub 首先用filename = Dir('F:\VBA学习\')这条语句把'F:\VBA学习'目录下的第一个文件名称赋值给filename变量,算是对Dir语句的一个初始化,然后用do loop循环让Dir语句遍历'F:\VBA学习'目录下的所有文件后,找不到新文件了返回空值,循环结束。 Dir函数支持通配符,若只想找某一类型的文件,就可以用通配符处理,如”*.wps”、”??.xls”。 例如:filename = Dir('F:\VBA学习\*.wps') '获得'F:\VBA学习'目录下的后缀名为wps的所有文件 filename = Dir('F:\VBA学习\*VBA*.*') '获得'F:\VBA学习'目录下的文件名称包含“VBA”的所有文件 小程序: 查询指定文件夹下的指定类型的文件,把文件列表写到表格里去。
我们可以在该表格下选择三个单元格,输入以下内容:
第一个单元格输入“文件类型”,第二个单元格建立一个下拉列表(选择该单元格,点击“数据”菜单,选择“下拉列表”,列表数据源来源于另一列单元格),第三个单元格插入一个命令按钮(选择该单元格,点击“开发工具”,选择“命令按钮”,然后沿该单元格边框画出命令按钮形状,并把命令按钮的Caption属性,也就是它的名称,改为“查询”),就象下面这样: ![]() [b10]单元格的数据源于E列,在[c10]单元格插入了一个查询按钮。 Sub Dir获取文件名() Dim 地址$, filename$, n%, 类型$ Range('a2:b8').Clear 地址 = 'F:\VBA学习\' 类型 = [b10] '选取文件类型 filename = Dir(地址 & '*' & 类型) Do n = n + 1 Cells(n + 1 , 1) = n Cells(n + 1 , 2) = filename filename = Dir Loop Until filename = '' End Sub 选取文件类型后,点击查询按钮,首先用filename = Dir(地址 & '*' & 类型)语句,利用“*”通配符,把'F:\VBA学习\'目录下的符合选取类型的第一个文件名称赋值给filename变量。然后Do Loop语句开始循环,n变量从0开始,Cells(2 , 1) = 1,第二行第一个单元格的序号为1,Cells(2 , 2) = filename,第二行第二个单元格的内容为第一个文件名称。接着filename = Dir语句获取符合条件的第二个文件名称,再循环对第三行的单元格进行赋值。依次循环,就可以把该类型的文件名称都写入表格里了。 |
|