分享

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

 拾叁亿人 2023-04-05 发布于云南

第一章 入门篇

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属性,也就是它的名称,改为“查询”),就象下面这样:

文章图片1

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多