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」に用意して実行してみました。
テスト結果
「一覧表示」ボタンを押下すると、検索パスに設定した「C:\temp」内のファイルが一覧化表示されました。
また、セルの中のリンクを押下すると、フルパスのファイルが開きます。(test2.txtは作りかけていた別件のプログラムです。)
その他の方法
ファイル一覧が欲しいだけであれば、コマンドプロンプトで取得することも可能です。
なので、コマンドプロンプトでファイル一覧を取得するケースも記事にしてみました。
しかしExcel VBAで実装するとボタン一つで再実行できます。
頻繁にファイル構成が変更される場合は、VBAによる実装も考えたほうが便利だと思います。
参考情報
環境
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows10 |
2 | Excel | Excel2016 |
以上です。
コメント