Office中国论坛/Access中国论坛

标题: 请各位帮小弟实现以下功能,具体见内容! [打印本页]

作者: adouleonshaw    时间: 2018-9-18 10:00
标题: 请各位帮小弟实现以下功能,具体见内容!
文件名称为1、2、3、111、qqq的文件分布在不同的文件夹中,双击文件名称可打开对应的文件,4、5、6、aaaaa、(AP01-2017-004)xx文件不存在于文件夹中,双击打不开。请各位老师帮我实现:如果各文件夹中存在对应的文件,则在G列显示“有”,如果文件夹中不存在对应的文件,如aaaaa,则在G列显示为“无”。

作者: roych    时间: 2018-9-18 12:00
将就用下吧,函数如下:
  1. Function isExists(ByVal rng As Range, Optional ByVal strExtName As String = ".pdf") As String
  2.     Dim fso As New FileSystemObject
  3.     Dim fd As Folder
  4.     Dim fl As File
  5.     Dim strFileName As String
  6.     Dim strExists As String
  7.     strExists = ""
  8.     For Each fd In fso.GetFolder(ThisWorkbook.Path).SubFolders
  9.         For Each fl In fd.Files
  10.             strFileName = Mid(fl, InStrRev(fl, "") + 1, Len(fl) - InStrRev(fl, "") - Len(strExtName))
  11.             If rng.Value = strFileName Then
  12.                 strExists = fl
  13.                 Exit For
  14.             End If
  15.             
  16.         Next
  17.     Next
  18.     isExists = strExists
  19. End Function
复制代码

将鼠标移动到函数所在的单元格,出现手型鼠标的时候,点击单元格即可
[attach]62802[/attach]
在弹出的警告栏上选择“是”,然后就可以打开文件了。
[attach]62801[/attach]
具体见附件:
[attach]62800[/attach]
作者: adouleonshaw    时间: 2018-9-18 14:05
roych 发表于 2018-9-18 12:00
将就用下吧,函数如下:

将鼠标移动到函数所在的单元格,出现手型鼠标的时候,点击单元格即可

老师:为什么移植到我的工作表中就出错了。
作者: roych    时间: 2018-9-18 17:36
adouleonshaw 发表于 2018-9-18 14:05
老师:为什么移植到我的工作表中就出错了。

因为你没引用Microsoft Scripting runtime 库啊。你又没说在后面的Excel表使用~~~点击“工具\引用”,下拉滚动条,选择Microsoft Scripting runtime ,点击确定后就好了。
[attach]62804[/attach]



作者: tmtony    时间: 2018-9-19 13:14

作者: adouleonshaw    时间: 2018-9-19 13:18
roych 发表于 2018-9-18 17:36
因为你没引用Microsoft Scripting runtime 库啊。你又没说在后面的Excel表使用~~~点击“工具\引用”, ...

我有500条记录,为什么这段代码运行起来非常卡?大师能不能帮我优化一下?
作者: roych    时间: 2018-9-19 14:21
adouleonshaw 发表于 2018-9-19 13:18
我有500条记录,为什么这段代码运行起来非常卡?大师能不能帮我优化一下?

跟记录条数可能不大,倒是跟你的文件夹和文件数量关系多一些。
——如果非要优化的话,就只能使用辅助列,一次性运行生成超链接地址,再用超链接地址写公式。这样的话,只需要运算一次。具体请参考:http://www.office-cn.net/thread-124788-1-1.html

作者: adouleonshaw    时间: 2018-9-19 14:22
roych 发表于 2018-9-19 14:21
跟记录条数可能不大,倒是跟你的文件夹和文件数量关系多一些。
——如果非要优化的话,就只能使用辅助列 ...

文件夹有100多个,文件有4000个左右




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