Windowsのフォルダ内にあるファイル一覧をExcelで簡単に取得したい方向けのVBAサンプルコードです。
指定したフォルダ配下のファイル名・パス・リンクをボタン1つで一覧出力でき、業務効率化やツール作成に役立ちます。
コピペで動くシンプル構成なので、初心者の方でもすぐ使えます。
このマクロを使うと、
- ファイル名一覧を自動取得
- フルパスも同時に出力
- クリックで開けるリンク付き
- サブフォルダもまとめて検索
といったことがボタン1つで実行できます。
- 「フォルダ内のファイル管理をExcelで行いたい」
- 「一覧表をすぐ作りたい」
- 「毎回手作業でコピーするのが面倒」
そんなときに便利なツールです。
仕様
使い方
- 「検索パス」に対象フォルダを入力(例:C:\temp)
- 「一覧表示」ボタンをクリック
- ファイル一覧がシートに出力されます
出力される情報
- ファイル名
- フルパス
- クリックで開けるリンク
※ 画面イメージは下の画像参照

ソースコード
Option Explicit
' グローバル変数
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は作りかけていた別件のプログラムの下書きです。)

参考情報
環境
下記の環境で作成・実行しております。
| No. | 環境 | バージョン |
|---|---|---|
| 1 | OS | Windows10 Windows11 |
| 2 | Excel | Excel2016 |
以上です。