⑴ 如何用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