特定のフォルダ内からすべての「サブフォルダ名」、「ファイル名」を取得する方法
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まだまだ理解が足りてません(;^ω^)
備忘録でした(^^)/~~~