エクスプローラなどでファイル名検索できますが、 ファイル一覧 を出力できれば便利な時ありませんか?windouwsであればコマンドプロンプトで実行可能ですが、Excel VBA でファイルの一覧も 取得 / 出力可能です。一度作っておけば便利になること間違いなし?
やりたいこと
指定フォルダに保存されているファイル名一覧を出力する。(サブフォルダも含む)
手段
再帰呼び出し(自分で自分のプロシージャを実行する)を行い、サブフォルダーパス以下にフォルダがなくなるまで処理します。
サンプルソース(コード)
Sub FileListUP()
With Application.FileDialog(msoFileDialogFolderPicker) '----(1)
If .show = True Then
Cells.ClearContents
Cells(1,1).Value = "ファイル一覧"
Call Output(.SelectedItem(1))
MsgBox "ファイルの一覧が作成されました"
End If
End With
End Sub
Sub Output(Path)
Dim FileName As String , o As Object
FileName = Dir(Path & "\*.*") '----(2)
Do While FileName <> "" '----(3)
Cells(Rows.Count , 1).End(xlUp).Offset(1 , 0).Value = Path & "\" & FileName
FileName = Dir()
Loop
For Each o In CreateObject("Scripting.FileSystemObject").GetFolder(Path).SubFolders '----(4)
Call Output(o.Path) '----(5)
Next o
End Sub
- (1)指定フォルダを選択し、Outputプロシージャにファイルパスを渡します。
- (2)当該ディレクトリにファイル一覧を取得します。
- (3)(2)でファイル名が取得できれば、以降のCells~でアクティブシートに書き出します。
- (4)当該フォルダに存在するサブフォルダの数を抽出し、その数だけ(5)を処理します。
- (5)(4)でサブフォルダがあれば、再度Outputプロシージャを実行します。(再帰呼び出し)
これで指定したフォルダ以下のファイル名をサブフォルダ含めて出力が可能となります。
コマンドプロンプトなどでも同じことができるかもしれませんが、ExcelVBAを使えば出力までやってくれる。。。
フォルダ内のファイル整理やファイル検索。便利になること間違い無しです。(出力結果にハイパーリンクを使えば、各種ファイルへのワンクリックオープンも可能ですね。)
文字列を分離する方法(MID関数など)を応用すれば、ファイル名だけ出力することも可能です。
一度考えてみてはいかがでしょうか?