欢迎来到天天文库
浏览记录
ID:50555724
大小:28.50 KB
页数:1页
时间:2020-03-10
《VBA遍历所有文件夹的两种方法(filesearch和FileSystemObject).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、VBA遍历所有文件夹的两种方法(filesearch和FileSystemObject)在VBA遍历文件夹和子文件夹中所有文件,常用两种方法,一种是使用VBA的filesercth对象,另外一种是使用FileSystemObject(windows文件管理工具)和递归方法。兰色对代码进行了注解,希望对大家有所帮助 第一种方法:使用filesearch对象 Submysearch()Dimfs,i,arr(1To10000)Setfs=Application.FileSearch'设置一个搜索对象With
2、fs .LookIn=ThisWorkbook.Path&"/"'设置搜索路径 .Filename="*.xls" '要搜索文件名和类型 .SearchSubFolders=True '是否需要搜索子文件夹 If.Execute>0Then '如果找不到文件 MsgBox"Therewere"&.FoundFiles.Count&_ "file(s)found." '显示文件找不到 Fori=1To.FoundFiles.Count '通过循环把所有搜索到的文件存入到数组中
3、 arr(i)=.FoundFiles(i) NextiSheets(1).Range("A1").Resize(.FoundFiles.Count)=Application.Transpose(arr)' '把数组内的路径和文件名放在单元格中 Else MsgBox"Therewerenofilesfound." EndIfEndWithEndSub第二种方法:引用FileSystemObject对象 注意:要使用FileSystemObject对象,需要首先引用一下,具体
4、方法,VBE--工具--引用--找到miscrosoftscriptionruntime项目并选中 代码及注释: DimArrFiles(1To10000)'创建一个数组空间,用来存放文件名称DimcntFiles%'文件个数PublicSubListAllFiles() DimstrPath$ '声明文件路径 Dimi% 'Setfso=CreateObject("Scripting.FileSystemObject") DimfsoAsNewFil
5、eSystemObject,fdAsFolder '创建一个FileSystemObject对象和一个文件夹对象 strPath=ThisWorkbook.Path&"/"'"设置要遍历的文件夹目录 cntFiles=0 Setfd=fso.GetFolder(strPath)'设置fd文件夹对象 SearchFilesfd'调用子程序查搜索文件 Sheets(1).Range("A1").Resize(cntFiles)=Application.Transpose
6、(ArrFiles)'把数组内的路径和文件名放在单元格中EndSub SubSearchFiles(ByValfdAsFolder) DimflAsFile DimsfdAsFolder ForEachflInfd.Files '通过循环把文件逐个放在数组内 cntFiles=cntFiles+1 ArrFiles(cntFiles)=fl.Path Nextfl Iffd.SubFolders.Count=0ThenExitSub'SubFolders返回由指定文件夹中所有子文件夹
7、(包括隐藏文件夹和系统文件夹)组成的Folders集合 ForEachsfdInfd.SubFolders'在Folders集合进行循环查找 SearchFilessfd'使用递归方法查找下一个文件夹 Next EndSub
此文档下载收益归作者所有