Office中国论坛/Access中国论坛

标题: 工作问题困惑很久了,恳请老师们帮我实现如下功能。 [打印本页]

作者: adouleonshaw    时间: 2018-9-19 15:35
标题: 工作问题困惑很久了,恳请老师们帮我实现如下功能。
恳请各位老师帮我实现如下功能:1、如果在各级文件夹中存在对应的文件,双击D列文件名称就能打开对应的文件(主要为PDF、xls、xlsx、doc、docx类型文件);
2、如果各级文件夹中存在与文件名称对应的文件,如文件1、2、3等,则在F列显示“有”,如果各级文件夹中不存在与文件名称对应的文件,如文件111、aaaaa等,则在F列显示为“无”。
因为有几百个文件夹(文件夹中有子文件夹),有成千上万个文件存放在这些文件夹中,本人请几个老师写过VBA,但因为文件和文件夹太多,VBA运行起来很卡,效率不高。只好再次求助于各位老师,看能否有更加有效的解决方法。


作者: roych    时间: 2018-9-19 15:49
其实吧,文件夹没有规律的话,不管使用什么样的循环,都是需要全局来搜索的。全部文件有1000个,就需要循环1000次。然后每个单元格1000次,100个单元格就是10万次~~~
如果想优化的话,最好还是先从文件夹命名上面进行简化,尽可能减少循环。例如,文件夹使用了省份来命名,搜索某省的某个文件时,只需要去某个省的文件夹下进行搜索,而不必从全国范围内搜索,这样才可能提高速度的。
命名乱七八糟的话,除了提升内存,CPU等硬件条件之外(硬件优化的提升度也相当有限),不会有更佳的优化方式的。
作者: adouleonshaw    时间: 2018-9-19 15:52
roych 发表于 2018-9-19 15:49
其实吧,文件夹没有规律的话,不管使用什么样的循环,都是需要全局来搜索的。全部文件有1000个,就需要循环 ...

老师:文件夹和文件名是有规律的,如下图
作者: roych    时间: 2018-9-19 16:05
adouleonshaw 发表于 2018-9-19 15:52
老师:文件夹和文件名是有规律的,如下图

怎么说呢?例如,你的文件名含有某个文件夹的某些特征字符,或许可以优化的。例如,文件名为:
90轻轨长隆停车场天桥-a.docx
这样的话,就可以直接在文件夹“90轻轨长隆停车场天桥”搜索,进行判断,会减少循环次数。但是,如果你的文件名是:a.docx---另一种是按文件夹名称来命名工作表,同样也可以相对减少循环次数。

根本不知道这个文件在哪个文件夹里,就必须循环每个文件夹,效率自然低很多了。即使你用了exit for也不会快多少,往往也要搜索很多个文件夹(exit for只是查找到就退出,不再查找剩下的文件罢了。但肯定比第一次就确定文件夹要多很多次循环)。





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3