目次
指定のフォルダが存在しない場合に作成するマクロ
VBA でファイルを保存する際など、ファイルの保存先フォルダが存在しなかったらそのフォルダを作成してからファイルを保存したい場合があります。
指定のフォルダが存在しない場合に作成するマクロ(コピペ利用でOK)
以下のプロシージャ MakeDirIfNotExist
は、引数としてフォルダパスを受け取り、パスに含まれる各フォルダについて存在チェックをして、存在しない場合はそのフォルダを作成します。
Sub MakeDirIfNotExist(ByVal tgtpath$)
Dim dirpath$, tgtdrive$
Dim subpath As Variant
Dim i&
If InStr(tgtpath, ":\") = 0 Then
MsgBox "入力パスの形式が不正です"
Exit Sub
End If
If Right(tgtpath, 1) = "\" Then
tgtpath = Left(tgtpath, Len(tgtpath) - 1)
End If
tgtdrive = Left(tgtpath, 3)
subpath = Split(Mid(tgtpath, 4), "\")
dirpath = tgtdrive
For i = LBound(subpath) To UBound(subpath)
dirpath = dirpath & subpath(i) & "\"
If Dir(dirpath, vbDirectory) = "" Then
MkDir dirpath
End If
Next
End Sub
- 入力:フォルダパスとなる文字列(フルパス)
- 出力:パスに含まれるフォルダが存在しない場合はそのフォルダを作成
使用例
以下のように、main
プロシージャから MakeDirIfNotExist
を呼び出し、引数として ThisWorkbook.Path & "\hoge\hoge\hoge"
を渡します。
Sub main()
MakeDirIfNotExist ThisWorkbook.Path & "\hoge\hoge\hoge"
End Sub
Excel ブックが保存されているフォルダ内に、hoge というフォルダが存在しない状況で上記の main
プロシージャを実行した場合、Excel ブックが保存されているフォルダ内に以下の 3 つのフォルダが作成されます。
- \hoge フォルダ
- \hoge\hoge フォルダ
- \hoge\hoge\hoge フォルダ