ファイル一覧を作成するフォルダ名をC2セルに入力しておきます。
サブフォルダも含めてファイル一覧を取得する
ファイル一覧を取得するVBAです。
MyFileからMyFileSubを呼び出します。
実行はMyFifileから行ってください。
● MyFileプロシージャ
・Set tFso = New FileSystemObjectで、FileSystemObjectオブジェクトのインスタンスを作成しています。ここでのインスタンスとは、オブジェクトのコピーです。
● MyFileSubプロシージャ
・SubFoldersプロパティでフォルダ毎にを再帰的に自身を呼び出し、サブフォルダも検索し一覧を取得しています。
・Filesプロパティでファイルを取得しています。
・Pathプロパティでパスを取得しています。ファイル名だけの場合は、Nameプロパティを使います。
・パス名はセルに表示され、表示セルは下の行に移動します。
Option Explicit
Private Sub MyFileSub(ByVal tPath As Folder, lr As Long, lc As Long)
Dim tInPath As Folder
Dim tFile As File
For Each tInPath In tPath.SubFolders
Call MyFileSub(tInPath, lr, lc)
Next tInPath
For Each tFile In tPath.Files
Cells(lr, lc) = tFile.Path
lr = lr + 1
Next tFile
Set tPath = Nothing
End Sub
Sub MyFile()
Dim tFso As FileSystemObject
Set tFso = New FileSystemObject
Call MyFileSub(tFso.GetFolder(Range("C2")), 4, 2)
Set tFso = Nothing
End Sub
FileSystemObjectの参照設定方法
参照設定をせずに上のプログラムを入力し実行した場合、「コンパイル エラー:ユーザ定義型は定義されていません」とエラーが表示されます。
メニューの[ツール]~[参照設定]をクリックします。
参照設定-VBAProjectダイアログが表示されます。
参照可能なライブラリ ファイルのリストから「Microsoft Scripting Runtime」にチェックを入れ、[OK]ボタンをクリックします。
これで設定完了です。
MyFileプロシージャを実行してください。
下のようにサブフォルダも含めたファイル一覧が表示されます。