PR
スポンサーリンク

【ExcelVBA】フォルダ内のサブフォルダ名の一覧を取得する方法(FileSystemObjectを使用)

スポンサーリンク
エクセルVBA-フォルダ内のサブフォルダ名一覧を取得-アイキャッチ フォルダの操作
スポンサーリンク

指定したフォルダ内にあるサブフォルダのフォルダ名を取得する方法とサブフォルダをすべて削除する方法について説明しています。

スポンサーリンク
スポンサーリンク

フォルダ内のサブフォルダ名一覧を取得する方法

指定したフォルダ内にあるサブフォルダのフォルダ名をすべて取得するマクロを作成します。

サブフォルダ名の取得はDir関数で取得する方法もありますが、記述方法に少し手間がかかるのでシンプルに記述できる「FileSystemObject」を使用した方法で説明していきます。

下の「サンプル」フォルダ内にあるサブフォルダ3つ(フォルダA~フォルダC)のフォルダパス(フルパス)とフォルダ名を取得します。

エクセルVBA-フォルダ内のサブフォルダ名を取得-フォルダの状態の画像

サンプルマクロで実行している内容
①対象のフォルダパスをセットする
②対象のフォルダ内のサブフォルダを繰り返す
③フォルダパス(フルパス)を出力する
④フォルダ名だけを出力する

Sub Sample1()

    Dim file As Object
    Dim TargetFolder As String
    
    '対象のフォルダパスをセットする…⓵
    TargetFolder = "C:~\サンプル"
    
    With CreateObject("Scripting.FileSystemObject")
    
        '対象のフォルダ内のサブフォルダを繰り返す…⓶
        For Each file In .GetFolder(TargetFolder).SubFolders
        
            'フォルダパス(フルパス)を出力する…⓷
            Debug.Print file.Path
            
            'フォルダ名だけを出力する…⓸
            Debug.Print file.Name
            
        Next file
        
    End With
End Sub

↓マクロ実行後の状態
 イミディエイトウィンドウにサブフォルダのパスとフォルダ名が出力されました。

エクセルVBA-フォルダ内のサブフォルダ名を取得-デバッグプリントに出力された状態の画像
スポンサーリンク

フォルダ内のサブフォルダをすべて削除する方法

次はフォルダA~フォルダCまでのサブフォルダをすべて削除するサンプルマクロです。

「サンプル」フォルダ内にあるサブフォルダ(フォルダA~フォルダC)を順番に削除していきます。

エクセルVBA-フォルダ内のサブフォルダ名を取得-フォルダの状態の画像

サンプルマクロで実行している内容
①対象のフォルダパスをセットする
②対象のフォルダ内のサブフォルダを繰り返す
③サブフォルダを削除する

Sub Sample2()

    Dim file As Object
    Dim TargetFolder As String
    
    '対象のフォルダパスをセットする…⓵
    TargetFolder = "C:~\サンプル"
    
    With CreateObject("Scripting.FileSystemObject")
    
        '対象のフォルダ内のサブフォルダを繰り返す…⓶
        For Each file In .GetFolder(TargetFolder).SubFolders
        
            'フォルダを削除する…⓷
            file.Delete
    
        Next file
        
    End With
    
End Sub

↓マクロ実行後の状態

エクセルVBA-フォルダ内のサブフォルダの削除-マクロ実行後の状態

マクロを実行すると「サンプル」フォルダににあった3つのフォルダが削除されて何もない状態になりました。

スポンサーリンク

関連記事

フォルダ内のファイル名一覧を取得する方法は↓の記事で説明しています。

スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

タイトルとURLをコピーしました