フォルダ内のファイルの数

中級VBA

はじめに

 フォルダ内のファイルの数を求めるには、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 では、GetFolderFiles 配列ができるので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

まとめ

 フォルダ内のファイルの数を得るプログラムは、ファイル一覧を出力するプログラムとそれほど変わりません。
 以下のページも参考にしてください。

 ・フォルダ内のファイル一覧
 ・Dir関数の基本的な使い方

タイトルとURLをコピーしました