打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用VBA操作文件(10):SearchFolders集合

本文主要介绍如何使用SearchFolders集合搜索文件。
介绍
在Office 9.0类型库中的FileSearch对象允许编程搜索匹配条件(例如作者的名字、文件的类型、最后修改文件的日期,等)的文件。此外,可以缩小搜索条件到已知的文件夹及任何子文件夹。然而,如果不知道路径的话,就没有方法搜索文件夹。
在Office 10.0类型库中添加到FileSearch对象的SearchFolders集合允许编程搜索多个文件夹中的文件,即便不知道它们的路径。
探索创建搜索条件的对象模型
为了更好地理解如何编程创建搜索条件,下图显示了可以使用的各种集合和对象,下表描述了SearchFolders集合及其子对象的用途。


图:FileSearch对象模型
表:SearchFolders集合及其子对象

对象/集合用途
SearchFolders代表要通过使用FileSearch对象搜索的文件夹集合。每个应用程序仅有一个SearchFolders集合。可以添加一个或多个ScopeFolder对象到该SearchFolders集合。
ScopeFolder代表希望添加到搜索的文件夹或子文件夹。每个ScopeFolder对象可以包含0个或多个ScopeFolders对象(子文件夹的集合)。如果ScopeFolder对象没有相应的子ScopeFolder对象的ScopeFolders集合,意味着该文件夹没有子文件夹(但该文件夹可以包含文件)。
ScopeFolders代表属于父ScopeFolder对象的一个或多个子文件夹的集合。


其它搜索对象简介

  • FileTypes集合 (Office XP中新增) 代表能够搜索的一个或多个文件类型(例如,Microsoft Excel文件或Microsoft PowerPoint文件)。在一个应用程序中仅有一个FileTypes集合。调用FileSearch对象的NewSearch方法清除FileTypes集合中任何以前的设置(例如,Application.FileSearch.NewSearch)。
  • FoundFiles集合 代表文件搜索返回的0个或多个文件。可以使用For Each…Next循环与FoundFiles集合一起,对查找的每个文件采取某种操作,例如打开或打印。等价于搜索结果任务窗格中呈现的文件列表。调用FileSearch对象的Execute方法开始文件搜索,更新FoundFiles集合(例如,Application.FileSearch.Execute)。
  • PropertyTests集合 代表应用到基本搜索的一个或多个高级搜索条件。等价于在高级搜索任务窗格的搜索区中呈现的结果。
  • SearchScopes集合(Office XP新增) 代表可以搜索的可用的本地或网络计算机资源 (例如,我的电脑,网上邻居,或Microsoft Outlook)。不能够从SearchScopes集合中添加或删除SearchScope对象等价于选择搜索任务窗格中的搜索框。

示例:搜索文件夹中包含指定文本的文件
示例下载:

本示例演示了SearchFolders集合如何工作。在示例中,当用户选择Word文档中的一些文本,并通过自定义用户窗体提供文件夹名后,代码搜索用户计算机中与用户提供的文件夹名相匹配的包含所选文本的任何文件,然后使用自定义用户窗体报告匹配文件的列表。
在搜索之前,应该清除任何以前的搜索条件。ClearPreviousSearchFolders过程通过从SearchFolders中移除任何存在的SearchFolder对象来完成这项操作。此外,该过程设置LookIn属性为空字符串,并调用NewSearch方法重设所有剩余的搜索条件为其默认设置。
为了搜索用户计算机上所有的文件夹,使用了递归的SearchForSubFolders过程。如果没有这个过程,那么搜索条件将仅限于用户计算机上文件夹的第一层。SearchForSubFolders过程调用其本身多次以遍历计算机整个目录结构。每次该过程找到与用户提供的文件夹名称相匹配的文件夹名后,调用AddToSearchFolders方法添加文件夹到应用程序的SearchFolders集合。
遍历用户计算机的整个目录结构之后,通过SearchFolders集合搜索包含用户所选文本的任何文件。FileSearch对象的Execute方法,与PropertyTests集合的LookIn属性和Add方法一起,返回包含相匹配文件的FoundFiles集合,通过调用ReportResultsToUser过程来更新和显示用户窗体报告给用户。
小结
SearchFolders集合允许编程搜索多个文件夹中的文件,即便事先不知道其路径。因为SearchFolders集合是FileSearch对象的一部分,可以容易地合并其它搜索条件到搜索解决方案中。

注:本文初译自MSDN:Using the SearchFolders Collection,收录于此,作为文件操作大全的一部分。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA遍历所有文件夹的两种方法(filesearch和FileSystemObject)
Office VBA教程:Execute方法
Excel VBA遍历文件
VBA 查询指定文件夹内所有文件
把多个word文档合并到一起
怎么操作无需打开Office文档直接打印?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服