
「これでVBAでも複数の新規フォルダをつくれる...」
VBAのMkDirは複数の新規フォルダ作成に対応してないが、今回のコードなら複数の新規フォルダ作成が可能。
さっそく紹介していこう。
作成するまえの準備
- VBAのエディタをひらき、上のメニュー、ツールを選択
- 参照設定から「Microsoft Scripting Runtime」にチェック
これで準備OK。つぎはコードを紹介していく。
複数の新規フォルダ作成コード【ネットワークフォルダ対応】
Sub multipleLayersMkDir(ByVal output_folder_path As String)
Dim file_system As New FileSystemObject
Dim folder_lists As Variant
Dim i As Long
Dim folder_path As String
folder_lists = Split(output_folder_path, "\")
For i = 2 To UBound(folder_lists)
folder_path = folder_path + folder_lists(i) & "\"
If folder_path = "\" Then
folder_path = folder_path
ElseIf folder_path = "\\" Then
i = i + 1
folder_path = folder_path + folder_lists(i) & "\"
ElseIf file_system.FolderExists(folder_path) = False Then
MkDir folder_path
End If
Next i
End Sub
簡単にいえば、1階層ずつフォルダがあるか検索して、なければフォルダ作成するイメージ。
つぎからコードを簡単に説明していこう。
フォルダのフルパスを分解して配列にいれる
folder_lists = Split(output_folder_path, "\")
ここでフォルダ名ごとに分解して、配列にする。これで1つづつフォルダを検索する準備が完了だ。
output_folder_pathに作りたいフォルダ階層を設定する。
"\"を追加する
For i = LBound(folder_lists) To UBound(folder_lists)
folder_path = folder_path + folder_lists(i) & "\"
If folder_path = "\" Then
folder_path = folder_path
ElseIf folder_path = "\\" Then
i = i + 1
folder_path = folder_path + folder_lists(i) & "\"
ここから配列として分解した各フォルダを1つづつ読み込んでフォルダがあるか確認していくことになるが。
まずネットワークフォルダに対応するため、"\"か"\\"のときの処理をしてフォルダとして読み込めるようにしている。
フォルダが存在してない場合フォルダを作成する
ElseIf file_system.FolderExists(folder_path) = False Then
MkDir folder_path
End If
フォルダが存在しなければMkDirでフォルダを作成していく。
- FolderExistsでフォルダが存在するか確認し
- 存在しなければMkDirでフォルダを作成する
コードの使いかた
Sub makingFolders()
Dim new_folder As String
new_folder = "作成したいフォルダパス"
Call multipleLayersMkDir(making_folder)
End Sub
new_folderに作成したいフォルダパスを入れるだけ。ぜひ試してみてくれ。

