Excel VBA:サブフォルダも含めたファイル一覧を再帰的に作成する
FileSystemObjectを使い、サブフォルダも含めたフォルダ内のファイル一覧を作成するVBAを掲載しています。
Homeに戻る >
Excel ファイル操作のTipsへ
掲載済みの「Excel VBA:フォルダ内のファイルリストを作成|サイズや日時も」で、FileSystemObjectオブジェクトのGetFolderメソッドを使ったVBAを掲載しました。
GetFolderメソッドについても、そこで詳しい解説を掲載していますので参照してください。
ここではGetFolderメソッドのSubFoldersプロパティを使用し、サブフォルダのファイル一覧を取得します。
SubFoldersプロパティは、フォルダ内の全てのサブフォルダを取得できます。
方法は下記のようになります。
- ルートフォルダのファイル一覧を作成します。
- 一つ目のサブフォルダがあれば、再帰呼び出しを行いファイル一覧を作成します。
- 一つ目のサブフォルダのサブフォルダがあれば、、再帰呼び出しを行いファイル一覧を作成します。
- 一つ目のサブフォルダのサブフォルダがなくなるまで、これを繰り返します。
- さらに2つ目以降のサブフォルダも、サブフォルダがなくなるまで同様に行います。
再帰的とは、自分が行っている処理から自分を呼び出す処理のことです。
ここでは、ExGetFileListプロシージャ内、ExGetFileListプロシージャを呼び出しています。
下記のVBAを、デバッグのステップ インで実行すれば流れが良く分かります。
このVBAを応用した「Excelでフォルダ内文字列検索ソフトを作ってみよう Step 2 フォルダ内ファイル一覧の作成」を掲載していますので参照してください。
サブフォルダを含めた、フォルダ内のファイル一覧を作成するVBA
ExcelシートとVBA入力画面
下画像のようにコマンドボタンを配置し、コマンドボタンのクリックイベントのVBE画面を呼び出します。
コマンドボタンクリックイベントと、ExGetFileListプロシージャを下記のように入力します。
VBAコードの解説
ほぼ「Excel VBA:フォルダ内のファイルリストを作成|サイズや日時も」と同じなので、そこでの解説を参照してください。
追加部分は下記になります。
- For Each tSub In tGf.SubFoldersでサブフォルダの数だけループします。
- 再帰呼び出しでファイル一覧を作成し、サブフォルダ以下のサブフォルダのファイル一覧を作成します。
- これをサブフォルダの数だけ繰り返します。
ExcelシートのVBAコード
Option Explicit
'Excel VBAでフォルダ内のファイルリストを作成
Private Sub ExGetFileList(strPath As String, lRow As Long)
Dim tSfo As Object
Dim tGf As Object
Dim tFi As Object
Dim tSub As Object
Set tSfo = CreateObject("Scripting.FileSystemObject")
Set tGf = tSfo.GetFolder(strPath)
For Each tFi In tGf.Files
'ファイル名
Cells(lRow, 2) = tFi.Name
'パス内に含まれるファイルの拡張子を除いたものを取得
Cells(lRow, 3) = tSfo.GetBaseName(tFi.Path)
'ファイルの拡張子
Cells(lRow, 4) = tSfo.GetExtensionName(tFi.Path)
'フォルダ名
Cells(lRow, 5) = tFi.ParentFolder.Path
'ファイルサイズ KByte
Cells(lRow, 6) = Int(tFi.Size / 1024)
'作成された日付・時刻
Cells(lRow, 7) = tFi.DateCreated
'ファイルの最終更新された日付・時刻
Cells(lRow, 8) = tFi.DateLastModified
'ファイルの最終アクセスの日付・時刻
Cells(lRow, 9) = tFi.DateLastAccessed
lRow = lRow + 1
Next
For Each tSub In tGf.SubFolders
ExGetFileList tSub.Path, lRow
Next
End Sub
Private Sub CommandButton1_Click()
ExGetFileList "e:\mydir", 4
End Sub
実行したExcelシート
8行名からサブフォルダのファイル一覧が表示されているのが分ります。
Homeに戻る >
Excel ファイル操作のTipsへ
■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します
Copyright (c) Excel-Excel ! All rights reserved