「エクセル vba scripting.filesystemobject ファイル数」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Excel VBA(Visual Basic for Applications)で、FileSyestemObjectオブジェクトを使って、ファイルの数を取得するには、どのようなコードを書けばいいのかを探している方による検索です。
指定したフォルダーのファイル数を取得するサンプルマクロ
以下のようなマクロで、指定したフォルダーのファイル数を取得できます。
Const FOL_PATH = "C:\temp" With CreateObject("Scripting.FileSystemObject")
MsgBox .GetFolder(FOL_PATH).Files.Count
End With
End Sub
FileSystemObjectオブジェクトのGetFolderメソッドで、Folderオブジェクトを取得して、
FolderオブジェクトのFilesプロパティでFilesコレクションオブジェクトを取得して、
FilesコレクションオブジェクトのCountプロパティで、ファイル数を取得しています。
VBAのDir関数を使う場合、ループ処理をする必要がありますが、FileSystemObjectオブジェクトを使えば、上記のように簡単にファイル数を取得できます。
指定した種類のファイル数を取得するサンプルマクロ
特定の種類のファイル数を取得する場合は、以下のようにループ処理が必要になります。Const FOL_PATH = "C:\temp"
Const EXTN = "PDF"
Dim n As Long
Dim fl As Object ' Scripting.File
With CreateObject("Scripting.FileSystemObject")
For Each fl In .GetFolder(FOL_PATH).Files
If UCase(.GetExtensionName(fl.Path)) = EXTN Then
n = n + 1
End If
Next
End With
MsgBox n
End Sub
指定したフォルダー内の全Fileオブジェクトに対してFor Each~Nextループを回して、
For Each fl In .GetFolder(FOL_PATH).Files
指定した拡張子と同じだったときに変数をインクリメントしています。
If UCase(.GetExtensionName(fl.Path)) = EXTN Then
n = n + 1
FileSystemObjectオブジェクトのGetExtensionNameメソッドの引数に、
FileオブジェクトのPathプロパティで取得したファイルのパスを指定して、
ファイルの拡張子を取得しているのが「.GetExtensionName(fl.Path)」というオブジェクト式です。
最終更新日時:2018-12-13 10:00
Home » FSO・FileSystemObjectの使い方 » FileSystemObjectを使ってファイル数を取得するマクロ