分享

Excel中VBA编程学习笔记(十八)

 hdzgx 2019-11-24

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,如下:

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多