■ 基本構文
MkDir path
path
:作成するフォルダの完全パス(文字列)
■ 基本例:フォルダの作成
Sub フォルダ作成例()
MkDir "C:\Users\YourName\Documents\新しいフォルダ"
End Sub
このコードを実行すると、指定されたパスに "新しいフォルダ"
が作成されます。
■ 注意点①:親フォルダが存在している必要がある
' このコードはエラーになります(中間のフォルダが存在しない場合)
MkDir "C:\Users\YourName\Documents\2025\06\14"
MkDir
は、一階層ずつしかフォルダを作成できません。2025
や06
など中間のフォルダが存在していないと「パスが見つかりません」エラーになります。
■ 対処法:フォルダが存在しなければ作成する
Sub フォルダ存在チェックと作成()
Dim folderPath As String
folderPath = "C:\Users\YourName\Documents\レポート"
If Dir(folderPath, vbDirectory) = "" Then
MkDir folderPath
MsgBox "フォルダを作成しました。"
Else
MsgBox "フォルダはすでに存在します。"
End If
End Sub
Dir(path, vbDirectory)
でフォルダの存在を確認。- 存在しない場合にのみ
MkDir
を実行。
■ 応用例:階層フォルダの自動作成(上級)
中間の親フォルダがない場合も含めて、階層ごとにフォルダを作成する方法:
Sub 階層フォルダ作成()
Dim fullPath As String
fullPath = "C:\Users\YourName\Documents\業務\2025\06\14"
Dim parts() As String
Dim i As Integer
Dim buildPath As String
parts = Split(fullPath, "\")
buildPath = parts(0) & "\" ' 最初のドライブ部分(例:C:\)
For i = 1 To UBound(parts)
buildPath = buildPath & parts(i) & "\"
If Dir(buildPath, vbDirectory) = "" Then
MkDir buildPath
End If
Next i
MsgBox "階層フォルダをすべて作成しました。"
End Sub
このマクロは、C:\Users\YourName\Documents\業務\2025\06\14
のようなパスにおいて、すべての階層を一つずつ確認し、必要に応じて作成します。
■ エラー処理を加える(重要)
Sub 安全にフォルダ作成()
On Error GoTo エラー処理
Dim folderPath As String
folderPath = "C:\TestFolder"
If Dir(folderPath, vbDirectory) = "" Then
MkDir folderPath
MsgBox "フォルダ作成成功"
Else
MsgBox "既に存在しています"
End If
Exit Sub
エラー処理:
MsgBox "エラー発生:" & Err.Description
End Sub
■ フォルダ作成後の活用例
作成したフォルダにファイルを保存する:
Sub 新規フォルダにファイル保存()
Dim savePath As String
savePath = "C:\TestFolder"
If Dir(savePath, vbDirectory) = "" Then
MkDir savePath
End If
ThisWorkbook.SaveAs Filename:=savePath & "\作業ファイル.xlsx"
End Sub
■ よくあるエラーと対策
エラー内容 | 原因・対策 |
---|---|
パスが見つかりません | 親フォルダが存在しない → 上記の階層作成法を使う |
ファイル名、または番号が不正です | MkDir のパス指定ミス → 末尾に \ を含めない |
無効なパス | ネットワークや特殊記号含む → パスを事前チェック |
■ 関連関数・ステートメント
関数・命令 | 役割 |
---|---|
Dir | フォルダやファイルの存在確認 |
RmDir | 空のフォルダを削除 |
MkDir | 新しいフォルダを作成 |
Name | ファイルやフォルダの名前を変更 |
GetAttr | ファイル属性の取得 |
■ まとめ
特徴 | 内容 |
---|---|
フォルダ作成命令 | MkDir "フルパス" |
親フォルダが必要 | 存在しないとエラーになる |
存在チェックには Dir() 使用 | If Dir(path, vbDirectory) = "" Then MkDir path |
複数階層対応には工夫が必要 | Split とループで1階層ずつ作成 |
エラーハンドリング推奨 | On Error で例外処理を入れると安全 |