VBA中DIR用法举例(共9页)_第1页
VBA中DIR用法举例(共9页)_第2页
VBA中DIR用法举例(共9页)_第3页
VBA中DIR用法举例(共9页)_第4页
VBA中DIR用法举例(共9页)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VBA中DIR函数用法讲解1、dir代码演示先上一段代码,作用是获取某个文件夹下子文件夹和文件的名称没加注释的代码Sub 获取文件夹和文件名()Dim str1 As String, str2 As String, i As IntegerSet a = Application.FileDialog(msoFileDialogFolderPicker) a.Show str1 = a.SelectedItems(1) str2 = Dir(str1 & IIf(Right(str1, 1) = , , ), vbDirectory) Do While Len(str2) 0 If str2 .

2、 And str2 . Then i = i + 1 Cells(i, 1) = str2End if str2 = Dir LoopEnd Sub加了注释的代码Sub 获取文件夹和文件名()Dim str1 As String, str2 As String, i As IntegerSet a = Application.FileDialog(msoFileDialogFolderPicker) 将文件对话框赋予变量a,目的是让我们选取需要操作的文件夹a.Show 显示文件对话框str1 = a.SelectedItems(1) 将选取的第一个文件夹路径赋予变量str1str2 = Dir

3、(str1 & IIf(Right(str1, 1) = , , ), vbDirectory) 在str1所代表的文件夹搜索,将找到的第一个文件或文件夹名称赋予变量str2Do While Len(str2) 0 当str2不为空字符串时进入循环 If str2 . And str2 . Then 如果将dir的第二参数指定为vbdirectory,第一参数指定为文件夹路径加,那么返回的第一个值是.,第二个值.i = i + 1 每循环一次变量i加1Cells(i, 1) = str2 将找到的文件或文件夹名赋予单元格End ifstr2 = Dir 如果希望dir函数返回指定文件夹里面多个

4、文件名,只需要在同一过程里面再次调用dir函数即可,而且后面的调用不需要指定参数LoopEnd Sub指定的文件夹如下图:运行上述代码的效果图,可以看到代码将“封装样本”文件夹下文件和文件夹名称全部取出来了。经过上面代码的演示,你可能对dir的作用有了模糊的了解,如果暂时还不懂,那不要紧,下面我们一起慢慢来了解dir的语法及应用。2、dir语法Dir(pathname,attributes)作用:根据指定的字符串表达式(pathname)和文件属性返回文件或文件夹名。Pathname:可选参数,一个字符串表达式,代表指定的文件路径,可包含通配符“*”和“?”。不同类型的字符串表达式的含义如下:

5、D:baidu player dir函数将在D盘根目录下搜索名为baidu player的文件或文件夹名,然后根据第二参数决定是返回文件名、文件夹名或者一起返回。D:baidu player dir函数将在D盘baidu player文件下搜索文件,然后根据第二参数决定返回内容D:baidu player*.xls dir函数将在D盘baidu player文件下搜索包含“.xls“的文件。所以此种方式可以搜索到.xls、.xlsx、.xlsm文件D:baidu player?.rmvb dir函数将在D盘baidu player文件下搜索以“.xls“结尾,以三个字符命名的excel文件,所

6、以此种方式只能搜索到.xls文件Attributes:可选参数,代表文件的属性,VBA里面的常数,可选以下常数,或以下几个常数的和。以下是VBA帮助关于attributes可选常数的解释。常数值描述vbNormal0指定没有属性的文件。vbReadOnly1指定无属性的只读文件vbHidden2指定无属性的隐藏文件VbSystem4指定无属性的系统文件 在Macintosh中不可用。vbVolume8指定卷标文件;如果指定了其它属性,则忽略vbVolume 在Macintosh中不可用。vbDirectory16指定无属性文件及其路径和文件夹。vbAlias64指定的文件名是别名,只在Maci

7、ntosh上可用。文件的属性解释如下,当我们用右键点击文件然后选择属性可以打开文件的属性页面,在最下面我们可到文件有只读和隐藏属性。让我们看下设置不同的第二参数组合时,将返回什么文件或文件夹名Vbnormal:不设置或指定vbnormal时将返回没有设置隐藏属性的普通文件名。vbDirectory:函数将返回没有设置隐藏属性的普通文件名vbreadonly:返回没有设置隐藏属性的普通文件名。这个不只是返回设置了只读属性的文件名。vbhidden:返回设置了隐藏属性和没有设置隐藏属性的普通文件名。这里要注意一点有些文件没有设置隐藏属性也会被隐藏,如我遇到的一个config.sys文件。Vbsys

8、tem:返回没有设置隐藏属性的普通文件和系统文件名Vbsystem+ vbhidden:返回设置了隐藏属性和没有设置隐藏属性的普通文件和系统文件名。vbDirectory+vbhidden:返回设置了隐藏属性和没有设置隐藏属性的普通文件和文件夹名vbDirectory+vbhidden+vbsystem:返回设置了隐藏属性和没有设置隐藏属性的普通文件、文件夹名和系统文件、文件夹名。说的比较复杂,其实我们平常第一参数指定的文件夹中一般不包含系统文件,所以一般用到的第二参数及组合是vbnormal、vbDirectory+vbhidden、vbDirectory。3、dir应用(1)返回指定文件夹

9、所有文件和文件夹名,开头的一段代码已经介绍了这个功能,这里不在重复。(2)返回指定文件夹所有子文件夹名代码如下,代码与开篇代码差不多,只是在循环过程中多了一个getattr函数的判断,getattr函数用于返回文件或文件夹名的属性,也就是dir第二参数几个常数的和,如果要判断一个文件或文件夹是否包含某种属性,可用getattr获得文件或文件夹的属性后,在用该属性值与某种属性对应的常数做and运算,数字间的and运算实际是一种二进制的对应位数相乘运算(不知道这个说法准不准确),如一个隐藏的文件夹,用getattr获得的属性是vbdirectory+vbhidden的和也就是18,换算成二进制是1

10、0010,如果要判断该文件是不是文件夹,可用18与vbdirectory做and运算,也就是10010*10000,对应位数得到10000,与vbdirectory相等,也就是该文件是文件夹,如果要判断该文件是否隐藏,可用18与vbhidden做and运算,结果可想而知。Sub 获取文件名()Dim str1 As String, str2 As String, i As IntegerSet a = Application.FileDialog(msoFileDialogFolderPicker)a.Showstr1 = a.SelectedItems(1)str2 = Dir(str1 &

11、 IIf(Right(str1, 1) = , , ), vbDirectory)Do While Len(str2) 0If str2 . And str2 . ThenIf (GetAttr(str1 & IIf(Right(str1, 1) = , , ) & str2) And vbDirectory) = vbDirectory Theni = i + 1Cells(i, 1) = str2Cells(i, 2) = GetAttr(str1 & IIf(Right(str1, 1) = , , ) & str2)End IfEnd Ifstr2 = DirLoopEnd Sub指定

12、文件夹,里面有个隐藏的文件夹vb运行后效果(3)获取某文件夹下所有文件名代码与第二段差不多,(GetAttr(str1 & IIf(Right(str1, 1) = , , ) & str2) And vbDirectory)=vbDirectory这句代码中的等号换成了“”,具体效果不演示了。Sub 获取文件名()Dim str1 As String, str2 As String, i As IntegerSet a = Application.FileDialog(msoFileDialogFolderPicker)a.Showstr1 = a.SelectedItems(1)str2

13、= Dir(str1 & IIf(Right(str1, 1) = , , ), vbDirectory)Do While Len(str2) 0If str2 . And str2 . ThenIf (GetAttr(str1 & IIf(Right(str1, 1) = , , ) & str2) And vbDirectory) vbDirectory Theni = i + 1Cells(i, 1) = str2Cells(i, 2) = GetAttr(str1 & IIf(Right(str1, 1) = , , ) & str2)End IfEnd Ifstr2 = DirLoo

14、pEnd Sub(4)获取某个文件下某种类型的文件。如我们经常要获取某个文件夹有多少excel文件,然后将该文件的内容复制到一个文件当中去,代码如下,dir第一参数改为了str1 & IIf(Right(str1, 1) = , , ) & *.xls,使用了通配符,如果要获取其他类型的文件,可将xls换成其他的扩展名,如要获取文件夹中的所有以jpg结尾的图片,可将第一参数改为str1 & IIf(Right(str1, 1) = , , ) & *.jpg。Sub 获取某种类型文件()Dim str1 As String, str2 As String, i As IntegerSet a = Application.FileDialog(msoFileDialogFolderPicker)a.Showstr1 = a.SelectedItems(1)str2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论