この記事では、セルの値を使用して、特定のフォルダ内のファイル名を一覧で取得する方法を紹介します。
この方法を使用することで、大量のファイルが保存されたフォルダから必要なファイル名を簡単に抽出できます。
今回は、Dir関数を使用しています。
Dir関数の基本的な構文は下記のとおりです。
- パス名: ファイルやフォルダが存在するディレクトリのパスを指定します。
- 属性: オプションの引数で、取得する項目の属性を指定できますが、通常、この引数は省略されます。
セルの値を使用してファイル名一覧をセルに書き出す
下図のように、Sheet1のセルB1に日付、セルB2にフォルダパスが入っているとします。
セルB2のフォルダパスとセルB1の日付を使用して「C:\サンプル\20240105」に格納されている
xlsxファイルのファイル名を、シート「ファイル名一覧」に書き出します。
サンプルコード
Sub ファイル名一覧取得()
‘セルB1のフォルダパスの変数
Dim f1 As String
‘セルB2の日付の変数
Dim f2 As String
‘ファイルが格納されているフォルダパスの変数
Dim path As String
‘ファイル名の変数
Dim fname As String
‘書き出す行の変数
Dim i As Long
‘ シート1をアクティブにする
Sheets(“Sheet1”).Activate
‘ セルB2のフォルダパスを取得
f1 = Range(“B2”) & “\”
‘ セルB1の日付をyyyymmdd形式で取得
f2 = Format(Range(“B1”), “yyyymmdd”) & “\”
‘ フォルダパスと日付を結合
path = f1 & f2
‘ ファイル名を取得(xlsxファイルのみ)
fname = Dir(path & “*.xlsx”)
‘ 「ファイル名一覧」シートをアクティブにする
Sheets(“ファイル名一覧”).Activate
‘ ファイル名を書き出す最初の行
i = 1 ‘1行目
‘ ファイルが存在する限り繰り返す
Do While fname <> “”
‘ A列のセルにファイル名を書き出す
Cells(i, “A”) = fname
‘ 次の行へ移動
i = i + 1
‘ 次のファイル名を取得
fname = Dir()
Loop
End Sub
シート「ファイル名一覧」にファイル名が書き出されました。
解説
fname = Dir(path & “*.xlsx”)
Dir関数を使用して指定したフォルダ内のファイル名を取得しています。
このサンプルでは、*.xlsx とすることでxlsxファイルのみを対象としていますが、
*.txt 、*.pdf など、どんな拡張子のファイルでも一覧に表示させることができます。
拡張子に関係なく、すべてのファイル名を取得したい場合は
Dir(path & “*.*”) としてみてください。