Windows上のフォルダにあるファイルを、Excelシート上に一覧表示するVBAのサンプルコードを公開してみます。
仕様
画面仕様
シートの「検索パス」のセルに検索対象のフォルダのパスを入力しています。
右側の「一覧表示」ボタンを押したときにファイル一覧が出力されます。
- ファイル名
- ファイルのフルパス
- ファイルへのリンク
ソースコード
Dim RowNo As Long
Dim No As Long
Sub ボタン1_Click()
Application.ScreenUpdating = False
RowNo = 5
No = 1
Call ClearList
Call FileSearch(Sheets(1).Cells(2, 2))
Application.ScreenUpdating = True
End Sub
'一覧初期化
Sub ClearList()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Sheets(1).Rows("5:" & Cells.Rows.Count).Delete
End Sub
'ファイル検索
Sub FileSearch(Path As String)
Dim FSO As Object
Dim Folder As Variant
Dim File As Variant
Set FSO = CreateObject("Scripting.FileSystemObject")
'サブフォルダ検索
For Each Folder In FSO.GetFolder(Path).SubFolders
Call FileSearch(Folder.Path)
Next Folder
'ファイル処理
For Each File In FSO.GetFolder(Path).Files
'No
Sheets(1).Cells(RowNo, 1).Value = No
No = No + 1
'ファイル名
Sheets(1).Cells(RowNo, 2).Value = File.Name
'フルパス
Sheets(1).Cells(RowNo, 3).Value = File.Path
'リンク
Sheets(1).Hyperlinks.Add Anchor:=Cells(RowNo, 4), Address:=File.Path, TextToDisplay:="リンク"
RowNo = RowNo + 1
Next File
End Sub
テスト実行
テスト用フォルダ
下記のようなテスト用のフォルダ「C:\temp」を用意して、テスト実行してみました。
testフォルダの下にはtest3.txtが格納されています。
テスト結果
「一覧表示」ボタンを押下します。
すると「検索パスのセルに指定した「C:\temp」に格納されているファイルが一覧表示されました。
また、「リンク」列のリンクを押下すると、ファイルが開きます。(test2.txtは作りかけていた別件のプログラムの下書きです。)
その他の方法
ファイル一覧が欲しいだけであれば、コマンドプロンプトで取得することも可能です。
なので、コマンドプロンプトでファイル一覧を取得するケースも記事にしてみました。
しかしExcel VBAで実装すると一度実装すると、ボタン一つで何度もファイル一覧の取得が可能です。
また人に配布する場合も、相手方への技術的抵抗が少ないです。
参考情報
環境
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows10 Windows11 |
2 | Excel | Excel2016 |
以上です。