Hi All,
Here is a method to list files from a directory (Including sub directory). I hope you would find this useful.
and call the function like..Code:Function SearchFiles(ByVal FolderToSearch As String, Optional ByVal Extn As String = "xls", _ Optional ByVal SearchSubFolders As Boolean = False) '//Developed by : ExcelFox.com If Right$(FolderToSearch, 1) <> "\" Then FolderToSearch = FolderToSearch & "\" If Not CBool(Len(Dir(FolderToSearch, vbDirectory))) Then Exit Function Dim objFSO As Object Dim objItem As Object Dim objFldr As Object Dim objFolder As Object Dim FilesList() As String Dim CountFiles As Long Dim strFileName As String If Left$(Extn, 1) <> "." Then Extn = "." & Extn Extn = Replace(Extn, "*", "") Select Case SearchSubFolders Case True Set objFSO = CreateObject("scripting.filesystemobject") Set objFolder = objFSO.getfolder(FolderToSearch) For Each objItem In objFolder.Files If InStr(1, LCase$(Mid$(objItem.Name, InStrRev(objItem.Name, "."))), LCase$(Extn)) Then CountFiles = CountFiles + 1 ReDim Preserve FilesList(CountFiles) FilesList(CountFiles) = objItem End If Next If objFolder.subfolders.Count Then For Each objFldr In objFolder.subfolders For Each objItem In objFldr.Files If InStr(1, LCase$(Mid$(objItem.Name, InStrRev(objItem.Name, "."))), LCase$(Extn)) Then CountFiles = CountFiles + 1 ReDim Preserve FilesList(CountFiles) FilesList(CountFiles) = objItem End If Next Next End If If CountFiles Then SearchFiles = FilesList Case False strFileName = Dir(FolderToSearch & "*" & Extn) Do While Len(strFileName) CountFiles = CountFiles + 1 ReDim Preserve FilesList(CountFiles) FilesList(CountFiles) = FolderToSearch & strFileName strFileName = Dir() Loop If CountFiles Then SearchFiles = FilesList End Select Set objFldr = Nothing Set objFolder = Nothing Set objFSO = Nothing End Function
Code:Sub kTest() Dim a a = SearchFiles("C:\MyFolder\", ".xls*", 1) MsgBox Join(a, vbLf) End Sub




Reply With Quote

Bookmarks