Home » FSO・FileSystemObjectの使い方 » 再帰処理でフォルダー一覧を作成するExcelマクロ

再帰処理でフォルダー一覧を作成するExcelマクロ

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

下図のような階層の深さがまちまちな、フォルダーの一覧を作りたいというシーンに出くわしました。

再帰処理でフォルダー一覧を作成するExcelマクロ

こういうときは再帰処理です。

[スポンサードリンク]

再帰処理でフォルダー一覧を作成するサンプルマクロ

再帰呼び出しを行ってフォルダー一覧を作成する、FileSystemObjectを利用したExcelマクロを、ご紹介しておきます。

Option Explicit
Private PATH_ As String ' 一覧を作成するルートフォルダーのフルパス

Public Sub ListFolders()
 Dim fso As Scripting.FileSystemObject
 Dim n As Long ' 書き出しを行う行番号

 n = 1
 PATH_ = Cells(n, "A").Value
 n = n + 1
 Set fso = New FileSystemObject
 On Error GoTo ErrHndl
 listSubFolders fso.GetFolder(PATH_), n

ExitSub:
 Set fso = Nothing
 Exit Sub

ErrHndl:
 MsgBox Err.Description
 Err.Clear
 GoTo ExitSub
End Sub


Private Sub listSubFolders(ByVal folder_ As Scripting.Folder, ByRef n As Long)
 Dim fol As Scripting.Folder
 For Each fol In folder_.SubFolders
  Cells(n, "A").Value = Replace(fol.Path, PATH_, "")
  n = n + 1
  listSubFolders fol, n
 Next
 Set fol = Nothing
End Sub

サンプルマクロの使い方

事前にMicrosoft Scripting Runtimeへの参照設定を行っておいてください。

アクティブシートのA1セルに、フォルダー一覧を作成したいフルパスを入力しておいてから、上記のSubプロシージャ・ListFoldersを実行すると、A2セル以下に下図のようなフォルダー一覧が作成されます。

再帰処理でフォルダー一覧を作成するExcelマクロ

[スポンサードリンク]

Home » FSO・FileSystemObjectの使い方 » 再帰処理でフォルダー一覧を作成するExcelマクロ

「FSO・FileSystemObjectの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.