我需要搜索文件系统(通常是驱动器)以获得完全定义的文件路径,同时只给出文件名的片段。
片段实际上是部件的部件号,要搜索的文件都是“.idw”类型。此外,它们以一系列有助于对它们进行排序的方式命名;即1XX-XXXX.idw,2XX-XXX.idw。
有50,000多个文件,只使用FileScriptingObject并递归读取每个文件夹,然后比较它们需要每次搜索2分钟。
(鉴于部件号列表,我需要在Excel中使用完整文件名填充一列)
我猜我最好的方法就是生成一个我正在寻找的所有idw文件的索引列表,将完整的文件字符串减少为只用基本名称并将其作为键。但是,这仍然需要在每次搜索开始时及时运行,假设我在每次运行中反复使用此字典/集合/列表。
有没有办法在外部文件中存储字典,所以我可以每天生成一次索引列表,或者不那么频繁地生成索引列表?
否则,对于我没想过的VBA,有没有更好的方法呢?
答案 0 :(得分:0)
跟随@omegastripes的评论,你可以结合三种方法来实现目标。
Exec
的{{1}}方法运行WScript.Shell
命令 - 可能比使用Dir
更快FileSystemObject
Split
获取返回的所有文件名的StdOut
数组 - 这是获取您要搜索的文件列表的一次性点击Variant
功能将数组简化为文件名,包括您有兴趣在电子表格中显示的文件名。 Filter
命令利用了一些对任务很重要的开关:
DIR
- 通过子目录递归/S
- 仅限裸名称/B
- 从输出中排除目录,即仅文件以下是示例代码:
/A:-D