Excel

ボタン一つ ファイル一覧 を 取得 に挑戦!【Excel VBA 】

Kuni.W

エクスプローラなどでファイル名検索できますが、 ファイル一覧 を出力できれば便利な時ありませんか?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関数など)を応用すれば、ファイル名だけ出力することも可能です。

一度考えてみてはいかがでしょうか?

ABOUT ME
記事URLをコピーしました