Excel中VBA编程学习笔记(十八)--目录遍历

Rem 下面的过程遍历指定目录下面的所有文件

Sub SearchFiles(ByVal fd, ByVal fileName1 As String, ByVal fileName2 As String)

    Dim fl As File

    Dim sfd As Folder

    For Each fl In fd.Files '通过循环把文件逐个放在数组内

        If InStr(fl.Name, fileName1) > 0 Or InStr(fl.Name, fileName2) > 0 Then ‘找到满足条件的文件

            tmp_count = tmp_count + 1 ‘计数器(从1开始计数)

            tmp_file_arr(tmp_count) = fl.Path & "\" & fl.Name        ‘将文件全路径存储到数组中

            fl.Copy  “D:\destion\”          ‘拷贝文件到指定的目录

        End If

   

    Next fl

   

    If fd.SubFolders.Count = 0 Then Exit Sub 'SubFolders返回由指定文件夹中所有子文件夹(包括隐藏文件夹和系统文件夹)组成的 Folders 集合

    For Each sfd In fd.SubFolders '在 Folders 集合进行循环查找

    SearchFiles sfd, fileName1, fileName2 '使用递归方法查找下一个文件夹

    Next

End Sub

 

调用格式

【例】搜索C:\test目录下的所有文件名包含“张三”或者“标题一”的文件,并且拷贝到指定的目录D:\destion下。

SearchFiles “C:\test”, “张三”, “标题一”

 

注:

(1)上面搜索的所有结果存储在数组tmp_file_arr中,文件名包含全路径,如果需要取出文件名可以用

Set fso = CreateObject("Scripting.FileSystemObject")

sname = fso.getfilename(tmp_file_arr(1)) '获取第一个文件的文件名

(2)上面使用了Folder数据类型,因此需要在引用中添加Microsoft Scripting Runtime,如下:

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据之道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值