特定のフォルダ内からすべての「サブフォルダ名」、「ファイル名」を取得する方法

FileSystemObjectを使って、特定のフォルダからすべての「サブフォルダ」、「ファイル」を取得する

最終更新日:2022/7/1

以下のようなフォルダが存在します。


フォルダがA、B、C、Dの4つ、
ファイルがDSC_0002.JPG、FSO.xlsmの2つあります。

これをFSO.xlsmからFileSystemObjectでフォルダ名、ファイル名取得するコードを記載します。

フォルダ名の取得

ファイル名の取得

フォルダ名を取得するコード

Option Explicit

Sub フォルダ名の取得_1()
    
    Dim fso As Object: Set fso = CreateObject("scripting.filesystemobject")
    Dim myPath
    Dim myFile
    
    myPath = ThisWorkbook.Path
    
    Dim myFolder
    For Each myFolder In fso.GetFolder(myPath).SubFolders
        Debug.Print myFolder.Name
    Next

End Sub


「For Each myFolder In fso.GetFolder(myPath).SubFolders」でmyPathのSubFolders(フォルダを取得します。)


処理結果は以下のように、イミディエイトウィンドウに書き出されます。

ファイル名の取得するコード

Option Explicit

Sub ファイルの取得_2()
    
    Dim fso As Object: Set fso = CreateObject("scripting.filesystemobject")
    Dim myPath
    Dim myFile
    
    myPath = ThisWorkbook.Path
    
    
    For Each myFile In fso.GetFolder(myPath).Files
        Debug.Print myFile.Name
    Next
    
    Set fso = Nothing

End Sub


処理結果は以下のように、イミディエイトウィンドウに書き出されます。

「For Each myFile In fso.GetFolder(myPath).Files」でmyPathのFiles(ファイル)を取得します。

感想

ファイル名の取得は、「fso.GetFolder(myPath).Files」とコードを見て分かったのですが、
フォルダ名の取得は、「 fso.GetFolder(myPath).SubFolders」というコードで、Forlderじゃないんかい!!と思いましたw。

しかしよく考えると、wrokがFolderで、その中にあるABCDは、workフォルダ内のサブフォルダーになるのか!と気づきました。

FSOまだまだ理解が足りてません(;^ω^)


備忘録でした(^^)/~~~