はじめに
VBAで作業をしていると、
「出力用のフォルダを自動で作りたい」
「日付ごとのフォルダを作成したい」
そんな“ちょっとした準備作業”が必要になることがあります。
そこで役立つのが MkDir と FileSystemObject です。
ここでは、フォルダ作成の基本と、
実務で安心して使える書き方を解説します。
まずはコードを確認(もっともシンプル)
MkDir "C:\TestFolder"
指定したパスにフォルダが作成されます。
フォルダを作成する基本
MkDir を使う
MkDir "C:\Data\Output"
シンプルで軽い方法です。
フォルダが存在するかチェックしてから作成する
実務では 存在チェックが必須 です。
Dim path As String
path = "C:\Data\Output"
If Dir(path, vbDirectory) = "" Then
MkDir path
End If
存在しないときだけ作成するため、エラーを防げます。
日付フォルダを作成する
Dim path As String
path = "C:\Data\" & Format(Date, "yyyy-mm-dd")
If Dir(path, vbDirectory) = "" Then
MkDir path
End If
日次処理やログ保存でよく使うパターンです。
複数階層のフォルダを作成する(MkDir だけでは不可)
MkDir は 1階層ずつ しか作れません。
例:
C:\Data\2026\03\31 を一気に作る → MkDir ではエラー
そこで FileSystemObject を使います。
FileSystemObject を使って複数階層を作成する
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateFolder "C:\Data\2026\03\31"
存在しない階層もまとめて作成できます。
具体的な例で理解する
年月フォルダを自動作成する
Dim fso As Object
Dim path As String
path = "C:\Data\" & Format(Date, "yyyy-mm")
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(path) Then
fso.CreateFolder path
End If
月次処理でよく使うパターンです。
出力先フォルダを作成してからファイル保存する
Dim fso As Object
Dim path As String
path = "C:\Export"
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(path) Then
fso.CreateFolder path
End If
ActiveWorkbook.SaveAs path & "\result.xlsx"
フォルダ作成と保存をセットで行う実務向けの書き方です。
注意点(実務で気をつけたいこと)
- MkDir は1階層ずつしか作れない
→ 複数階層は FileSystemObject を使う。
- すでに存在するフォルダに MkDir を使うとエラー
→ Dir で存在チェックすると安心。
- ネットワークフォルダは遅いことがある
→ エラー処理を入れておくと安全。
- パスの末尾に「\」を重ねない
→ “C:\Data\” のようなパスは避ける。
応用:安全にフォルダを作成する関数
Function CreateSafeFolder(path As String) As Boolean
On Error GoTo ErrHandler
If Dir(path, vbDirectory) = "" Then
MkDir path
End If
CreateSafeFolder = True
Exit Function
ErrHandler:
CreateSafeFolder = False
End Function
実務でよく使う“安全なフォルダ作成”の関数です。
まとめ
- フォルダ作成は MkDir が基本
- 存在チェックをしてから作成すると安全
- 複数階層は FileSystemObject が便利
- 日付フォルダ・月次フォルダの作成は実務でよく使う
- フォルダ作成は“準備作業”を自動化する大切な一歩
フォルダを作ることは、
処理の“土台”をそっと整えるような作業です。

フォルダを自動で作れるようになると、
毎日の作業がすっと軽くなります。
VBAは、そんな準備のひと手間を静かに支えてくれます。

新しいフォルダって、ちいさな箱みたいでかわいいよね。
VBAなら、その箱をぽんっと作ってくれるよ。

コメント