⑴ 如何用excel vba按关键字选择性的遍历文件夹搜索文件
Excel怎样批量提取文件夹和子文件夹所有文件
怎样批量提取文件夹下文件名⑵ 在vba中使用什么函数可以实现遍历文件夹和文件的需求,并得到指定路径下的文件
可参考截图的代码试试。
vb对文件夹、及文件的访问
⑶ VBA中怎么遍历所选路径中所有文件夹及其子文件夹(多个子文件),并返回所有的最底层的文件夹路径
答:执行"获取所有文件夹",按提示操作。文件夹清单会显示在工作表的AB列中。
Sub获取所有文件夹()
DimDirectoryAsString
WithApplication.FileDialog(msoFileDialogFolderPicker)
.InitialFileName=Application.DefaultFilePath&""
.Title="请选择一个文件夹"
.Show
If.SelectedItems.Count=0Then
ExitSub
Else
Directory=.SelectedItems(1)
EndIf
EndWith
Cells.ClearContents
CallRecursiveDir(Directory)
EndSub
PublicSubRecursiveDir(ByValCurrDirAsString)
DimDirs()AsString
DimNumDirsAsLong
DimFilesizeAsDouble
DimTotalFolders,SingleFolder
Cells(1,1)="目录名"
Cells(1,2)="日期/时间"
Range("A1:B1").Font.Bold=True
SetTotalFolders=CreateObject("Scripting.FileSystemObject").GetFolder(CurrDir).SubFolders
Cells(WorksheetFunction.CountA(Range("A:A"))+1,1)=CurrDir
Cells(WorksheetFunction.CountA(Range("B:B"))+1,2)=FileDateTime(CurrDir)
IfTotalFolders.Count<>0Then
ReDimPreserveDirs(0ToNumDirs)AsString
Dirs(NumDirs)=SingleFolder
NumDirs=NumDirs+1
Next
EndIf
Fori=0ToNumDirs-1
RecursiveDirDirs(i)
Nexti
EndSub
⑷ 如何用VBA遍历指定目录下的所有子文件夹和文件
SubTest()
DimMyName,Dic,Did,I,T,F,TT,MyFileName
T=Time
SetDic=CreateObject("Scripting.Dictionary")'创建一个字典对象
SetDid=CreateObject("Scripting.Dictionary")
Dic.Add("D:MyDocuments"),""
I=0
DoWhileI<Dic.Count
Ke=Dic.keys'开始遍历字典
MyName=Dir(Ke(I),vbDirectory)'查找目录
DoWhileMyName<>""
IfMyName<>"."AndMyName<>".."Then
If(GetAttr(Ke(I)&MyName)AndvbDirectory)=vbDirectoryThen'如果是次级目录
Dic.Add(Ke(I)&MyName&""),""'就往字典中添加这个次级目录名作为一个条目
EndIf
EndIf
MyName=Dir'继续遍历寻找
Loop
I=I+1
Loop
Did.Add("文件清单"),""'以查找D盘MyDocuments下所有EXCEL文件为例
ForEachKeInDic.keys
MyFileName=Dir(Ke&"*.xls")
DoWhileMyFileName<>""
Did.Add(Ke&MyFileName),""
MyFileName=Dir
Loop
Next
ForEachShInThisWorkbook.Worksheets
IfSh.Name="XLS文件清单"Then
Sheets("XLS文件清单").Cells.Delete
F=True
ExitFor
Else
F=False
EndIf
Next
IfNotFThen
Sheets.Add.Name="XLS文件清单"
EndIf
Sheets("XLS文件清单").[A1].Resize(Did.Count,1)=WorksheetFunction.Transpose(Did.keys)
TT=Time-T
MsgBoxMinute(TT)&"分"&Second(TT)&"秒"
EndSub
⑸ 如何用VBA遍历指定目录下的所有子文件夹Excel文件的所有工作表
vba麻烦点,dir最快,excelhome论坛上有大量现成代码:
SubOpiona()'//函数实例
FileArr=FileAllArr(ThisWorkbook.Path,"*.xls",ThisWorkbook.Name,False)
Fori=0ToUBound(FileArr)
MsgBoxFileArr(i)
'SetWB=Workbooks.Open(FileArr(I))'//打开工作簿
'你的代码
'WB.Closetrue'//保存
Next
EndSub
'*******************************************************************************************************
'功能:查找指定文件夹含子文件夹内所有文件名或文件夹名(含路径)
'函数名:FileAllArr
'参数1:Filename需查找的文件夹名不含最后的""
'参数2:FileFilter需要过滤的文件名,可省略,默认为:[*.*]
'参数3:Liwai剔除例外的文件名,可省略,默认为:空,一般为:ThisWorkbook.Name
'参数4:Files是否只要文件夹名,可省略,默认为:FALSE
'返回值:一个字符型的数组
'使用方法:FileArr=FileAllArr(ThisWorkbook.Path,"*.xls",ThisWorkbook.Name,false)
'作者:北极狐工作室QQ:14885553
'*******************************************************************************************************
PublicFunctionFileAllArr(ByValFilenameAsString,="*.*",OptionalByValLiwaiAsString="",OptionalByValFilesAsBoolean=False)AsString()
SetDic=CreateObject("Scripting.Dictionary")'创建一个字典对象
SetDid=CreateObject("Scripting.Dictionary")
Dic.Add(Filename&""),""
i=0
DoWhilei<Dic.Count
Ke=Dic.keys'开始遍历字典
MyName=Dir(Ke(i),vbDirectory)'查找目录
DoWhileMyName<>""
IfMyName<>"."AndMyName<>".."Then
If(GetAttr(Ke(i)&MyName)AndvbDirectory)=vbDirectoryThen'如果是次级目录
Dic.Add(Ke(i)&MyName&""),""'就往字典中添加这个次级目录名作为一个条目
EndIf
EndIf
MyName=Dir'继续遍历寻找
Loop
i=i+1
Loop
Dimarrx()AsString
i=0
IfFiles=TrueThen'//是否只输出文件夹名
ForEachKeInDic.keys'以查找总表所在文件夹下所有excel文件为例
ReDimPreservearrx(i)
IfKe<>Filename&""Then'//自身文件夹除外
arrx(i)=Ke
i=i+1
EndIf
Next
FileAllArr=arrx
Else
ForEachKeInDic.keys'以查找总表所在文件夹下所有excel文件为例
MyFileName=Dir(Ke&FileFilter)'过滤器:EXCEL2003为:*.xls,excel2007为:*.xlsx
DoWhileMyFileName<>""
IfMyFileName<>LiwaiThen'排除例外文件
ReDimPreservearrx(i)
arrx(i)=Ke&MyFileName
i=i+1
EndIf
MyFileName=Dir
Loop
Next
FileAllArr=arrx
EndIf
EndFunction
'****************************************************************
⑹ 求助]如何用VBA遍历指定目录下的所有子文件夹和文件-字典模式
F是一个临时逻辑变量,在循环查找工作簿中是否有名为“XLS文件清单”的工作表,找到为“真”,否则为假。目的是方便后续的代码处理,如果没有这个工作表,则先创建建这个工作表,后面才能放置遍历出来的文件夹及文件名。
⑺ 怎么用vba遍历文件夹里的所有文件
遍历操作,一般运用于提取和写入等的操作,其基本原理和代码都一样,
遍历的方法也有很多种,以下我提供一种方法open法,除去红框以内
的代码基本都是遍历的基础代码,在这个基础上可以做根据实际需要的添加修改
⑻ 如何用VBA遍历指定文件夹内的所有文件
用dir函数加上循环即可。比如将D:ABC文件夹内的所有文件显示到A列,代码如下:
Sub遍历所有文件()
DimFn$,N%
Fn=Dir("D:ABC*.*")
WhileFn<>""
N=N+1
Range("A"&N)=Fn
Fn=Dir
Wend
EndSub
⑼ 如何使用VBA遍历文件夹及其子文件夹中的所有excel,并打开后进行修改
ImportsSystem.Net.Dns
ImportsSystem.Net
ImportsSystem.Net.IPAddress
PublicClassForm1
DoWhileDateFile<>""
'filname(nn)=DateFile
'DateFile=Dir
好绝野厅'nn=nn+1
Loop
Whileee=1
颂袜隐EndWhile
EndSub
EndClass
⑽ 求助]如何用VBA遍历指定目录下的所有子文件夹和文件-字典模式
F是一个临时逻辑变量,保存本程序工作簿中是否已有名为“XLS文件清单”的工作表,方便纳腔后拿茄棚续的代码处理,如果没有,就先建这个工作表消则,后面才能放置遍历出来的文件夹。
经过对代码的分析,以下两行完全可以省略
Else
F = False