学习VBA,报表做到飞 第一章 入门篇 1.25 Dir语句

第一章 入门篇

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”的所有文件

小程序:

查询指定文件夹下的指定类型的文件,把文件列表写到表格里去。

序号

文件名称















我们可以在该表格下选择三个单元格,输入以下内容:

文件类型

docx

查询

第一个单元格输入“文件类型”,第二个单元格建立一个下拉列表(选择该单元格,点击“数据”菜单,选择“下拉列表”,列表数据源来源于另一列单元格),第三个单元格插入一个命令按钮(选择该单元格,点击“开发工具”,选择“命令按钮”,然后沿该单元格边框画出命令按钮形状,并把命令按钮的Caption属性,也就是它的名称,改为“查询”),就象下面这样:

学习VBA,报表做到飞 第一章 入门篇 1.25 Dir语句

[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语句获取符合条件的第二个文件名称,再循环对第三行的单元格进行赋值。依次循环,就可以把该类型的文件名称都写入表格里了。


往期精彩回顾:

学习VBA,报表做到飞 第一章 入门篇 1.24 Do Loop语句

学习VBA,报表做到飞 第一章 入门篇 1.23 With语句

学习VBA,报表做到飞 第一章 入门篇 1.22 union与intersect


我是云飞扬,职场财会人员,愿与大家分享表格制作和数据统计分析的技巧与方法,希望大家的工作更便捷,更轻松!

展开阅读全文

页面更新:2024-04-22

标签:语句   通配符   赋值   文件名   变量   文件类型   文件名称   报表   文件夹   按钮   类型

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top