This works for me
Code:
Sub count_files()Dim Fso As Object
Dim Str As String
Dim FldPath As String
Dim fldr As Object
Dim SubFldrs As Object
Dim numFiles As Long
Dim fld1 As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
Str = VBA.InputBox("Enter file format you want to count or leave blank for each file", "File Format")
Application.FileDialog(msoFileDialogFolderPicker).Show
FldPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
Set fldr = Fso.GetFolder(FldPath)
Call TallyFiles(fldr, Str, numFiles)
Set SubFldrs = Fso.GetFolder(FldPath).SubFolders
For Each fld1 In SubFldrs
Call TallyFiles(fld1, Str, numFiles)
Next fld1
MsgBox numFiles
End Sub
Private Function TallyFiles(ByRef folder As Object, ByVal filetype As String, ByRef cnt As Long) As Boolean
Dim F1 As Object
For Each F1 In folder.Files
If filetype = "" Or _
UCase(Mid(F1.Path, InStrRev(F1.Path, ".") + 1, Len(F1.Path))) Like UCase(filetype) Then
cnt = cnt + 1
End If
Next F1
End Function
Bookmarks