ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > Office2007及2010版本取消FileSearch方法的取代方案

Office2007及2010版本取消FileSearch方法的取代方案

作者:绿色风 分类: 时间:2022-08-18 浏览:124
楼主
NeverQuest
今天早上有个网友加我QQ让我帮他弄个VBA,A列为文本文件名,B列为对应的文件内容。把以前用的批量获取指定目录下的文件名宏拿出来用,可在我的Excel2010上没反应,换台装2003的正常运行,于是进行调试,发现了Application.FileSearch这句对象不支持。打开对象浏览器,居然找不到Filesearch方法,再打开“显示隐含成员”时发现“Filesearch“变成灰色的了,原来成太监了。以前很多用2003做的宏,用office2007打开以后,总是会出现了一堆的debug窗口。在网上找到一个替代方法:对于在代码中重复用到的功能,可以新建类,这对代码的改动小一些。

第一个类,命名为FileSearh:

第二个类,命名为FilesFound :

使用:

这种办法虽然相当原来的功能有一些少,但是可以一定程度上减少代码移植的成本。

→→→→→→→分界线:使用DIR函数来获取指定目录下所有文件→→→→→--
  1. Sub listfile()
  2. '宏由 NeverQuest 录制
  3. Dim mypath As String, nm As String
  4. Dim theSh As Object
  5. Dim theFolder As Object
  6. Dim i As Integer
  7.    
  8. Application.ScreenUpdating = False
  9. On Error Resume Next
  10.     '设置搜索路径
  11.     Set theSh = CreateObject("shell.application")
  12.     Set theFolder = theSh.BrowseForFolder(0, "", 0, "")
  13.     If Not theFolder Is Nothing Then
  14.         mypath = theFolder.Items.Item.Path
  15.     End If
  16.     '//////////////搜索开始////////////////
  17.      
  18.     nm = Dir(mypath & "\*.*") '第一次使用dir,必须指定pathname参数,返回符合条件的第1个文件名
  19.     i = 1
  20.     Range("a1") = nm            '单元格A1返回找到的第一个文件名
  21.     Do While nm <> ""
  22.         nm = Dir                    '再次调用不需要pathname参数
  23.         Range("a" & i + 1) = nm
  24.         i = i + 1
  25.     Loop
  26. Application.ScreenUpdating = True
  27. End Sub
2楼
laoyebin
代码貌似在FANS见过的
3楼
NeverQuest
veryword.com/2009/04/24/office2007_application-filesearch.html

上的快照,现在打不开了,及时把主要内容转了过来。(发帖数少于10,不能发链接...)

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap