Используйте следующую функцию для получения количества файлов
Function numberOfFiles(ByVal dirName As String, ByVal mask As String) As Long
On Error GoTo Catch
Dim maskName As String
maskName = dirName & mask
With CreateObject("wscript.shell")
numberOfFiles = UBound(Split(.exec("cmd /c Dir """ & maskName & """ /b/a").stdout.readall, vbCrLf)) - 1
End With
Exit Function
Catch:
numberOfFiles = 0
End Function
Протестируйте ее с помощью
Sub testIt()
Debug.Print numberOfFiles("D:\user\examples\", "*.pdf")
End Sub
Ваш код изменится на
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim ws As Worksheet
Dim lngFileCount As Long
Dim Z As Long
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set ws = ActiveSheet
Dim folderpath As String
folderpath = InputBox("N:\Files", "Folder Path")
Set objFolder = objFSO.GetFolder(folderpath)
ws.Cells(1, 1).Value = "The files found in " & objFolder.Name & " are:"
Z = numberOfFiles(folderpath, "*.PDF")
If Z = 0 Then
MsgBox "No PDF Files found"
Else
MsgBox "The total number of files in folder: " & Z
End If
Set objFolder = Nothing
Set objFile = Nothing
Set objFSO = Nothing
и просто включите функцию numberOfFiles чуть ниже нее.