首頁/ 家居/ 正文

access遞迴列出資料夾中的檔案

本文介紹如何在VBA中遞迴列出檔案,在列表框中顯示檔案路徑和檔名

前面的我們講過類似的例項《

Access獲取資料夾內的檔名及路徑

》,下面函式的功能更加完整

Public Function ListFiles(strPath As String, Optional strFileSpec As String, _ Optional bIncludeSubfolders As Boolean, Optional lst As ListBox) On Error GoTo Err_Handler ‘Purpose: List the files in the path。 ’Arguments: strPath = the path to search。 ‘ strFileSpec = “*。*” unless you specify differently。 ’ bIncludeSubfolders: If True, returns results from subdirectories of strPath as well。 ‘ lst: if you pass in a list box, items are added to it。 If not, files are listed to immediate window。 ’ The list box must have its Row Source Type property set to Value List。 ‘Method: FilDir() adds items to a collection, calling itself recursively for subfolders。 Dim colDirList As New Collection Dim varItem As Variant Call FillDir(colDirList, strPath, strFileSpec, bIncludeSubfolders) ’Add the files to a list box if one was passed in。 Otherwise list to the Immediate Window。 If lst Is Nothing Then For Each varItem In colDirList Debug。Print varItem Next Else For Each varItem In colDirList lst。AddItem varItem Next End If Exit_Handler: Exit Function Err_Handler: MsgBox “Error ” & Err。Number & “: ” & Err。Description Resume Exit_Handler End Function Private Function FillDir(colDirList As Collection, ByVal strFolder As String, strFileSpec As String, _ bIncludeSubfolders As Boolean) ‘Build up a list of files, and then add add to this list, any additional folders Dim strTemp As String Dim colFolders As New Collection Dim vFolderName As Variant ’Add the files to the folder。 strFolder = TrailingSlash(strFolder) strTemp = Dir(strFolder & strFileSpec) Do While strTemp vbNullString colDirList。Add strFolder & strTemp strTemp = Dir Loop If bIncludeSubfolders Then ‘Build collection of additional subfolders。 strTemp = Dir(strFolder, vbDirectory) Do While strTemp vbNullString If (strTemp “。”) And (strTemp “。。”) Then If (GetAttr(strFolder & strTemp) And vbDirectory) 0& Then colFolders。Add strTemp End If End If strTemp = Dir Loop ’Call function recursively for each subfolder。 For Each vFolderName In colFolders Call FillDir(colDirList, strFolder & TrailingSlash(vFolderName), strFileSpec, True) Next vFolderName End If End Function Public Function TrailingSlash(varIn As Variant) As String If Len(varIn) > 0& Then If Right(varIn, 1&) = “” Then TrailingSlash = varIn Else TrailingSlash = varIn & “” End If End If End Function

access遞迴列出資料夾中的檔案

在名為“lstFileList”列表框,並設定行來源型別為“值列表”

在程式碼中呼叫函式, Call ListFiles(“D:\OfficeCn\Office Addin”, , , Me。lstFileList)

access遞迴列出資料夾中的檔案

同理,還可以:

列出D:\OfficeCn\Office Addin中的檔案

Call ListFiles(“D:\OfficeCn\Office Addin”)

列出D:\OfficeCn\Office Addin中字尾為。zip的檔案

Call ListFiles(“”D:\OfficeCn\Office Addin“, ”*。zip“)

列出D:\OfficeCn\Office Addin中的檔案,並列出子資料夾下的檔案

Call ListFiles(”D:\OfficeCn\Office Addin“, , True)

相關文章

頂部