Home » FSO・FileSystemObjectの使い方 » FileSystemObjectを使ってファイル数を取得するマクロ

FileSystemObjectを使ってファイル数を取得するマクロ

「エクセル vba scripting.filesystemobject ファイル数」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Excel VBA(Visual Basic for Applications)で、FileSyestemObjectオブジェクトを使って、ファイルの数を取得するには、どのようなコードを書けばいいのかを探している方による検索です。

[スポンサードリンク]

指定したフォルダーのファイル数を取得するサンプルマクロ

以下のようなマクロで、指定したフォルダーのファイル数を取得できます。

Sub ファイル数を取得する()
 Const FOL_PATH = "C:\temp"

 With CreateObject("Scripting.FileSystemObject")
  MsgBox .GetFolder(FOL_PATH).Files.Count
 End With
End Sub

FileSystemObjectオブジェクトのGetFolderメソッドで、Folderオブジェクトを取得して、

FileSystemObjectを使ってファイル数を取得するExcelマクロ

FolderオブジェクトのFilesプロパティでFilesコレクションオブジェクトを取得して、

FileSystemObjectを使ってファイル数を取得するExcelマクロ

FilesコレクションオブジェクトのCountプロパティで、ファイル数を取得しています。

FileSystemObjectを使ってファイル数を取得するExcelマクロ

VBAのDir関数を使う場合、ループ処理をする必要がありますが、FileSystemObjectオブジェクトを使えば、上記のように簡単にファイル数を取得できます。

指定した種類のファイル数を取得するサンプルマクロ

特定の種類のファイル数を取得する場合は、以下のようにループ処理が必要になります。
Sub ファイル数を取得する_拡張子指定()
 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メソッドの引数に、

FileSystemObjectを使ってファイル数を取得するExcelマクロ

FileオブジェクトのPathプロパティで取得したファイルのパスを指定して、

FileSystemObjectを使ってファイル数を取得するExcelマクロ

ファイルの拡張子を取得しているのが「.GetExtensionName(fl.Path)」というオブジェクト式です。

最終更新日時:2018-12-13 10:00

[スポンサードリンク]

Home » FSO・FileSystemObjectの使い方 » FileSystemObjectを使ってファイル数を取得するマクロ

「FSO・FileSystemObjectの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.