vba list files in folder code example

Example 1: excel vba get list of Excel files in a folder

'VBA function to return an array of file names from a folder:

Public Function GetFiles(sPath$, Optional sFilter$ = "*.*")
  	Dim p&, f$, s$: s = Space(1e6)        
    f = Dir(sPath & _
        String(Abs(Right(sPath, 1) <> "\"), "\") & sFilter)
        Do While Len(f)
            Mid(s, p + 1, Len(f) + 1) = f & vbLf
            p = p + Len(f) + 1
            f = Dir
        Loop
    GetFiles = Split(Left(s, p - 1), vbLf)
End Function

'--------------------------------------------------------------------

ExcelFiles = GetFiles("C:\temp", "*.xls*")
MsgBox LBound(ExcelFiles)  '<--displays: 0

Example 2: excel vba list files in folder

' List of files in folder / subfolders
' Needs to add "Microsoft Scripting Runtime" reference to your file
Sub FolderFilesInfo(ByVal pFolder As String, ByRef pColFiles As Collection, _
    Optional ByVal pGetSubFolders As Boolean, Optional ByVal pFilter = "*.*")
    Dim sFolder As String
    Dim oFSO As New FileSystemObject
    Dim oFolder, oSubFolder As Folder
    Dim oFile As File
    
    sFolder = IIf(Right(pFolder, 1) <> "\", pFolder & "\", pFolder)
    Set oFolder = oFSO.GetFolder(sFolder)
    For Each oFile In oFolder.Files
        pColFiles.Add oFile
    Next oFile
    If pGetSubFolders Then
        For Each oSubFolder In oFolder.SubFolders
            FolderFilesInfo oSubFolder.Path, pColFiles, pGetSubFolders, pFilter
        Next
    End If
End Sub
'------------------------------------------------------------------------------
Sub TestMe()
    Dim colFiles As New Collection, sFilePath As Variant
    FolderFilesInfo ThisWorkbook.Path, colFiles, True, "*.txt"
    For Each oFile In colFiles
        Debug.Print oFile.Name & " : " & oFile.Path
    Next oFile
End Sub

Tags:

Vb Example