マクロファイルが保管されているフォルダに新規フォルダを作成

タイトルのマクロは、以下です。

'****************************************************************
'* マクロファイルが保管されているフォルダに新規フォルダを作成
'* folderName:フォルダ名
Sub CreateFolderInMacroDirectory(ByVal folderName As String)
    ' クラス FileObj のインスタンス化。
    Dim F As FileObj: Set F = New FileObj
    Dim fullFolderName As String
    ' マクロと同じフォルダにフォルダを作成
    fullFolderName = ThisWorkbook.Path & "\" & folderName

    'FileObjクラスのCreateFolder()メソッドを実行し、フォルダを作成します。
    Dim blnCrtD As Boolean
    blnCrtD = F.CreateFolder(fullFolderName)

    '戻り値がfalseの場合
    If (blnCrtD = False) Then
        'エラーの詳細を表示して処理を抜けます。
        Call MsgBox(F.Message, vbOKOnly + vbCritical, "フォルダ作成エラー")
        Exit Sub
    End If
End Sub

各部分の説明

サブルーチンの宣言
Sub CreateFolderInMacroDirectory(ByVal folderName As String)
  • folderName というパラメータを受け取り、この名前のフォルダを作成します。
FileObj クラスのインスタンス化
    Dim F As FileObj: Set F = New FileObj
  • FileObj クラスの新しいインスタンスを作成します。このクラスにはフォルダ作成やエラーメッセージ処理の機能が含まれています。
新しいフォルダのフルパスを設定
    Dim fullFolderName As String
    ' マクロと同じフォルダにフォルダを作成
    fullFolderName = ThisWorkbook.Path & "\" & folderName
  • ThisWorkbook.Path はマクロファイルが保存されているフォルダのパスを取得します。これに folderName を追加して新しいフォルダのフルパスを作成します。
フォルダの作成
    Dim blnCrtD As Boolean
    blnCrtD = F.CreateFolder(fullFolderName)
  • FileObj クラスの CreateFolder メソッドを呼び出して、新しいフォルダを作成します。CreateFolder メソッドはフォルダの作成に成功したかどうかを示すブール値を返します。
エラーハンドリング
    '戻り値がfalseの場合
    If (blnCrtD = False) Then
        'エラーの詳細を表示して処理を抜けます。
        Call MsgBox(F.Message, vbOKOnly + vbCritical, "フォルダ作成エラー")
        Exit Sub
    End If
  • CreateFolder メソッドが False を返した場合(つまり、フォルダの作成に失敗した場合)、エラーメッセージを表示してサブルーチンを終了します。エラーメッセージは FileObj クラスの Message プロパティから取得されます。

使用例

以下の使用例では、「新規フォルダ」という名前のフォルダをマクロファイルが保存されているフォルダ内に作成します。

Sub 使用例()
    Call CreateFolderInMacroDirectory("新規フォルダ")
End Sub

FileObj クラスは、以下参照願います

Follow me!