はじめに
フォルダ内のファイルの数を求めるには、Dir関数を使う方法と FileSystemObject を使う方法があります。
また、拡張子の種類で数を求める事もできます。
Dir関数を利用した方法
Dir関数でファイルの数を数えるには以下のようにカウント用変数(cnt)を用います。
Sub FileCountForDir()
Dim fname As String
Dim myPath As String
Dim cnt As Long
myPath = "C:\tools" 'フォルダを指定
fname = Dir(myPath & "\*.*") 'ファイルの種類を指定(全て)
cnt = 0
Do While fname <> ""
cnt = cnt + 1
fname = Dir()
Loop
MsgBox cnt & "個のファイルがあります。"
End Sub
拡張子を特定してカウント
下線の “*.*” 部分を “*.xlsx” のようにすれば拡張子を限定して数える事もできます。
FileSystemObject を利用した方法
FileSystemObject では、GetFolderで Files 配列ができるのでCountで数を得る事ができます。
Sub FileCountForFOS()
Dim folderName As String
folderName = "C:\tools" 'フォルダを指定
Dim myFSO As Object
Dim fileCount As Long
Set myFSO = CreateObject("Scripting.FileSystemObject")
fileCount = myFSO.GetFolder(folderName).Files.Count
MsgBox fileCount & "個のファイルがあります。"
Set myFSO = Nothing
End Sub
拡張子を特定してカウント
拡張子を指定して数を得たい場合は、Files配列から個々のファイルの拡張子を調べてカウントします。
拡張子を調べるには、GetExtensionNameを使います。
Sub FileExtCountForFOS()
Dim folderName As String
folderName = "C:\tools" 'フォルダを指定
Dim cnt As Long
Dim FSO As Object
Dim myFile As Object
Dim myPath As String
Set FSO = CreateObject("Scripting.FileSystemObject")
cnt = 0
For Each myFile In FSO.GetFolder(folderName).Files
'拡張子を得る
If FSO.GetExtensionName(myFile) = "xlsx" Then
cnt = cnt + 1
End If
Next myFile
Debug.Print "xlsxファイルの数=" & cnt
Set FSO = Nothing
End Sub
まとめ
フォルダ内のファイルの数を得るプログラムは、ファイル一覧を出力するプログラムとそれほど変わりません。
以下のページも参考にしてください。