この記事では、セルの値を使用して、FileSystemObjectで特定のフォルダ内のすべてのファイル名を取得する方法についてご紹介します。
参照設定の追加
まず、FileSystemObjectを利用する前に、VBE(Visual Basic Editor)で参照設定を追加する必要があります。
以下の手順で行います。
①VBEを開く
②「ツール」メニューから「参照設定」を選択
③「Microsoft Scripting Runtime」にチェックを入れて「OK」をクリック
これで、FileSystemObjectを使用するための準備が整いました。
セルの値を使用してFileSystemObjectでファイル名を取得する
では、具体的な例を見ていきましょう。
下図のように、Sheet1のセルB1に日付、セルB2にフォルダパスが入っているとします。
セルB2のフォルダパスとセルB1の日付を使用して、「C:¥サンプル¥20240105」に格納されているすべてのファイルのファイル名を、シート「ファイル名一覧」に書き出します。
サンプルコード
Sub FileSystemObjectでファイル名一覧取得()
‘ FileSystemObjectの準備
Dim fso As FileSystemObject
Set fso = New FileSystemObject
‘ 変数の宣言
‘セルB2のフォルダパスの変数
Dim f1 As String
‘セルB1の日付の変数
Dim f2 As String
‘取得するファイルのフォルダパスの変数
Dim path As String
‘ Sheet1をアクティブにする
Sheets(“Sheet1”).Activate
‘ セルB2のフォルダパスを取得
f1 = Range(“B2”) & “\”
‘セルB1の 日付をyyyymmdd形式で取得
f2 = Format(Range(“B1”), “yyyymmdd”) & “\”
‘ セルB2とセルB1を結合して「C:\サンプル\20240105\」を作成
path = f1 & f2
‘ 「C:\サンプル\20240105\」からファイル一覧を取得
Dim fl As Files
Set fl = fso.GetFolder(path).Files
‘ 取得する各ファイルを格納する変数
Dim f As File
‘ 書き出す行番号を格納する変数
Dim i As Long
i = 1 ‘1行目
‘ ファイル名をシート「ファイル名一覧」のA列に書き出す
For Each f In fl
Sheets(“ファイル名一覧”).Cells(i, “A”) = f.Name
i = i + 1
Next
‘ FileSystemObjectを解放
Set fso = Nothing
‘ シート「ファイル名一覧」をアクティブにする
Sheets(“ファイル名一覧”).Activate
End Sub
シート「ファイル名一覧」にファイル名が書き出されました。
あとがき
この記事では、FileSystemObjectを使用して特定のフォルダ内のすべてのファイル名を一覧化する方法について紹介しました。
すべてのファイル名ではなく、特定の拡張子のみのファイル名を取得したい場合は、別の記事で紹介していますので、ぜひそちらも参考にしてみてくださいね。