特定のフォルダにどんなファイルが保存されているかを一覧にまとめたい。そんなとき、手作業でひとつずつ確認していては手間も時間もかかってしまいます。
VBAを使えば、フォルダ内のファイル名を一括で取得し、シートに自動で一覧化することが可能です。
今回は、実際にファイル一覧を出力するマクロの書き方と、その活用方法を紹介します。
フォルダ内のファイル一覧を取得するマクロ
次のコードは、指定したフォルダ内にあるファイルの一覧を、アクティブシートに書き出すマクロです。
Sub ListFiles()
Dim path As String
Dim fName As String
Dim i As Long
path = "C:¥Test¥" ' 取得したいフォルダのパスを指定
If Right(path, 1) <> "¥" Then path = path & "¥"
fName = Dir(path & "*.*")
i = 1
Do While fName <> ""
Cells(i, 1).Value = fName ' A列にファイル名を出力
fName = Dir
i = i + 1
Loop
End Sub
このマクロでは、Dir 関数を使ってフォルダ内のファイルを順番に取得し、それぞれのファイル名をシートのA列に出力しています。
フォルダのパスは "C:¥Test¥" のように変更してください。
補足:
.Value = fNameの部分で、ファイル名をセルに出力しています。Dir関数は2回目以降、引数なしで呼び出すと、次のファイルを取得できます。
フォルダ選択ダイアログを使って柔軟に対応
フォルダのパスを毎回コードで書き換えるのは手間です。
そこで、ユーザーが実行時にフォルダを選べるようにすることで、利便性が大きく向上します。
次のコードは、フォルダ選択ダイアログを使って、選ばれたフォルダ内のファイルを一覧化する例です。
Sub ListFilesWithDialog()
Dim path As String
Dim fName As String
Dim i As Long
Dim dlg As FileDialog
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
If dlg.Show = -1 Then
path = dlg.SelectedItems(1)
Else
MsgBox "フォルダが選択されませんでした。", vbExclamation
Exit Sub
End If
If Right(path, 1) <> "¥" Then path = path & "¥"
fName = Dir(path & "*.*")
i = 1
Do While fName <> ""
Cells(i, 1).Value = fName
fName = Dir
i = i + 1
Loop
End Sub
このコードでは、FileDialog を使用してフォルダを選択し、そのパスに基づいてファイル一覧を作成します。
事前にコードを編集する必要がなく、誰でも使いやすい仕組みです。
実装するメリット
このマクロを使うことで、次のような実務上のメリットがあります。
- 手作業によるファイル名の確認を省略できる
- 大量のファイルでも一瞬で一覧化できる
- ファイルの棚卸やチェックリスト作成が容易になる
- マクロを応用すれば、拡張子や更新日なども出力できる
- フォルダ選択を可能にして、再利用性・汎用性が高まる
特に、定期的にファイルを確認する作業をしている場合や、ファイル管理の正確性が求められる場面で、大幅な効率化が見込めます。
応用テクニックでさらに便利になる
ファイル名だけでなく、フルパスや更新日時、拡張子の絞り込みなどにも対応できます。
次のようなコードに少し変更を加えることで、より多くの情報を扱えるようになります。
例:フルパスを取得するように変更する場合
Cells(i, 1).Value = path & fName
例:特定のファイルだけを取得する場合(例:Excelファイル)
fName = Dir(path & "*.xlsx")
これらの応用を組み合わせれば、必要なファイルだけを自動で抽出し、後工程へつなぐ仕組みも作れます。
まとめ
VBAを使って、フォルダ内のファイル一覧をシートに自動出力することで、手作業の手間を減らし、確認作業を効率化できます。
Dir関数を使ってファイル名を取得するFileDialogでフォルダを選べるようにして利便性を向上- 応用すれば拡張子や更新日時などの条件にも対応可能
- 実務でのファイル管理や資料作成の下準備に活用できる
VBAの第一歩としても、実務の自動化としても役立つテクニックです。
ファイル一覧の作成に時間をかけていた方は、ぜひ一度試してみてください。
