例えばtempフォルダ配下に
(階層的な)フォルダ「folder01\folder02\folder03」が
存在しない場合…
(階層的な)フォルダを
作成できます!
VBAコード
処理を以下の2つに分けて作成します。
呼び出し関係は以下です。
ソースコードは以下です。
Option Explicit
Sub main()
Dim folder As String
'フォルダ名を指定
folder = "C:\Users\user\Desktop\temp\folder01\folder02\folder03"
'(階層的な)フォルダ作成処理(再帰的)を呼び出し
Call createFolders(folder)
End Sub
'-------------------------------------
'(階層的な)フォルダ作成処理
'-------------------------------------
Function createFolders(ByVal folder As String)
Dim fso As Object
Dim parentFolder As String
Set fso = CreateObject("Scripting.FileSystemObject")
'親フォルダを取得
parentFolder = fso.GetParentFolderName(folder)
'親フォルダが存在しない場合
'親フォルダを対象に自身を再呼び出し(再帰)
If Not fso.FolderExists(parentFolder) Then
Call createFolders(parentFolder)
End If
'フォルダが存在しない場合のみ作成
If Not fso.FolderExists(folder) Then
fso.createFolder folder
End If
'後片付け
Set fso = Nothing
End Function
実行結果
(階層的な)フォルダ作成を作成できました。
参考①
単純にフォルダを新規作成することもできます。
詳細は以下の記事をご確認ください。
参考②
フォルダの存在有無の確認は、以下の記事を参考にしました。
参考③
上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。
●「FileSystemObject」の「GetParentFolderName」メソッド
●「FileSystemObject」の「createFolder」メソッド