Windows上のフォルダにあるファイルを、Excelシート上に一覧表示するVBAのサンプルコード

VBA
記事内に広告が含まれています。

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.環境バージョン
1OSWindows10
Windows11
2ExcelExcel2016
環境一覧

以上です。