EXCEL、VBA

【VBA】フォルダを作成する【深い階層のフォルダー】

 

フォルダを作成する構文

早速結論。フォルダを作成する構文は次のとおりです。ただし深い階層の場合、その親のフォルダが作成されていないとエラーになる点に注意です(対処している関数はこの下に記載)

'フォルダを作成する
MkDir フォルダパス

'例
MkDir "C:\test"

 

フォルダを作成する

指定したフォルダを新規作成する関数です。

直前のフォルダないフォルダを作成しようとするとエラーになりますが、この関数は直前のフォルダも作成するため、深い階層のフォルダーを作成することも可能になっています。

引数 folderPath : 作成するフォルダのパス(文字列)

戻り値 True:作成成功、False:作成失敗

補足:ファイルパスの最後は\あり・なしどちらでも可。作りたいフォルダがすでにある場合Falseとなります。

Public Function createFolder(ByVal folderPath As String) As Boolean

On Error GoTo Catch

    If Dir(folderPath, vbDirectory) <> "" Then
        '作成したいフォルダが既にある場合
        createFolder = False
        Exit Function
    End If
    
    Dim tmp_path As String
    Dim arr() As String
    Dim i As Long
    arr = Split(folderPath, "\")
    tmp_path = arr(0)
    
    '階層が深くなってもループで作成する
    For i = 1 To UBound(arr)
        tmp_path = tmp_path & "\" & arr(i)
        If Dir(tmp_path, vbDirectory) = "" Then
            MkDir tmp_path
        End If
    Next i
    
    createFolder = True  '正常終了
    Exit Function
    
Catch:
    createFolder = False
End Function

 

実行例

Debug.Print createFolder("C:\test\1")
' True

Debug.Print createFolder("C:\test\2")
' False