作者:绿色风
分类:
时间:2022-08-18
浏览:124
楼主 NeverQuest |
今天早上有个网友加我QQ让我帮他弄个VBA,A列为文本文件名,B列为对应的文件内容。把以前用的批量获取指定目录下的文件名宏拿出来用,可在我的Excel2010上没反应,换台装2003的正常运行,于是进行调试,发现了Application.FileSearch这句对象不支持。打开对象浏览器,居然找不到Filesearch方法,再打开“显示隐含成员”时发现“Filesearch“变成灰色的了,原来成太监了。以前很多用2003做的宏,用office2007打开以后,总是会出现了一堆的debug窗口。在网上找到一个替代方法:对于在代码中重复用到的功能,可以新建类,这对代码的改动小一些。
第一个类,命名为FileSearh:
第二个类,命名为FilesFound :
使用:
这种办法虽然相当原来的功能有一些少,但是可以一定程度上减少代码移植的成本。
→→→→→→→分界线:使用DIR函数来获取指定目录下所有文件→→→→→--- Sub listfile()
- '宏由 NeverQuest 录制
- Dim mypath As String, nm As String
- Dim theSh As Object
- Dim theFolder As Object
- Dim i As Integer
-
- Application.ScreenUpdating = False
- On Error Resume Next
- '设置搜索路径
- Set theSh = CreateObject("shell.application")
- Set theFolder = theSh.BrowseForFolder(0, "", 0, "")
- If Not theFolder Is Nothing Then
- mypath = theFolder.Items.Item.Path
- End If
- '//////////////搜索开始////////////////
-
- nm = Dir(mypath & "\*.*") '第一次使用dir,必须指定pathname参数,返回符合条件的第1个文件名
- i = 1
- Range("a1") = nm '单元格A1返回找到的第一个文件名
- Do While nm <> ""
- nm = Dir '再次调用不需要pathname参数
- Range("a" & i + 1) = nm
- i = i + 1
- Loop
- Application.ScreenUpdating = True
- 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总版主之一