業務需求:對檔案夾(包含子檔案夾)中指定型別檔案進行批處理
解決思路:通過VBA獲取指定檔案路徑下的檔案串列清單,并通過一維陣列形式存盤檔案名稱,檔案擴展名。子檔案夾的清單可以通過遞回呼叫的方式獲取檔案串列。然后根據檔案型別作為判斷條件,打開指定型別檔案進行后續處理,比如文本替換等。以下給出檔案夾遍歷程序代碼:
Sub GetAllFiles(ByVal RecepPath As String) ' get files list
Dim Mainfolder, SubFolder, File_Currentfolder As Object
On Error Resume Next
Set Mainfolder = FS.getfolder(RecepPath)
For Each File_Currentfolder In Mainfolder.Files
FilesList_i = FilesList_i + 1
If Right(RecepPath, 1) <> "\" Then
RecepPath = RecepPath & "\"
End If
FilesList(FilesList_i, 1) = RecepPath & File_Currentfolder.Name
FilesNameList(FilesList_i, 1) = FS.getbasename(File_Currentfolder)
FileExtNameList(FilesList_i, 1) = FS.getextensionname(File_Currentfolder)
Next
For Each SubFolder In Mainfolder.Subfolders
Call GetAllFiles(SubFolder.Path)
Next
End Sub
uj5u.com熱心網友回復:
這是問問題?還是自問自答?uj5u.com熱心網友回復:
新人表示看不懂啊~~uj5u.com熱心網友回復:
百度一下你就知道uj5u.com熱心網友回復:
看得不是很懂你的意思,不過下面這段代碼可以提取檔案夾下所有檔案的名稱,然后你再根據需求做相應處理Sub 提取指定檔案夾內的所有檔案名() '含所有子檔案夾內的檔案
Dim Fso As Object, arrf$(), mf&
Set Fso = CreateObject("Scripting.FileSystemObject")
Call GetFiles(CreateObject("Shell.Application").BrowseForFolder(0, "請選擇檔案夾", 0, "mypath").Self.Path, Fso, arrf, mf)
[a2].Resize(mf) = Application.Transpose(arrf)
Set Fso = Nothing
MsgBox ("讀取完成")
End Sub
uj5u.com熱心網友回復:
給代碼能給完整的嗎, getfile函式在哪?這樣樓主怎么知道
uj5u.com熱心網友回復:
