VBAでフォルダを自動作成する方法を徹底解説

Excel VBAを使えば、フォルダの作成も簡単に自動化できます。
日付ごとのフォルダ作成や、複数フォルダの一括作成など、業務の効率化にも役立つ機能です。

この記事では、初心者の方にもわかりやすく、VBAでフォルダを作成する基本的な方法から、実践的な応用例まで丁寧に解説します。
コピペで使えるコード例も豊富に紹介しますので、ぜひご活用ください。


VBAでフォルダを作成する基本構文

まずは、VBAでフォルダを作成する際に使用する基本的な構文を見てみましょう。

MkDir "C:\Users\YourName\Desktop\TestFolder"

この1行で、指定したパスに「TestFolder」というフォルダが作成されます。
ただし、フォルダがすでに存在している場合にはエラーが発生するため、事前のチェックが必要です。

If Dir("C:\Users\YourName\Desktop\TestFolder", vbDirectory) = "" Then
MkDir "C:\Users\YourName\Desktop\TestFolder"
End If

このように条件文と組み合わせることで、エラーを回避しながら処理を行うことができます。


実践!今日の日付でフォルダを作成する方法

業務でよくあるのが、「毎日その日のフォルダを作る」という作業です。
以下のコードを使えば、今日の日付(例:2025-04-14)を名前としたフォルダを作成できます。

Sub CreateTodayFolder()
Dim folderPath As String
folderPath = "C:\Users\YourName\Desktop\" & Format(Date, "yyyy-mm-dd")

If Dir(folderPath, vbDirectory) = "" Then
MkDir folderPath
MsgBox "フォルダを作成しました:" & folderPath
Else
MsgBox "すでにフォルダが存在します:" & folderPath
End If
End Sub

このコードは、Excelを使った日次業務の自動化にも応用可能です。


ネストされたフォルダを一括で作成する方法

フォルダの中にさらに別のフォルダを作る、というケースもよくあります。
例えば「2025-04-14」→「書類」「画像」「PDF」などのサブフォルダを作る場合は、以下のように書きます。

Sub CreateNestedFolders()
Dim basePath As String
basePath = "C:\Users\YourName\Desktop\" & Format(Date, "yyyy-mm-dd")

If Dir(basePath, vbDirectory) = "" Then
MkDir basePath
End If

Dim subFolders As Variant
subFolders = Array("書類", "画像", "PDF")

Dim i As Integer
For i = LBound(subFolders) To UBound(subFolders)
If Dir(basePath & "\" & subFolders(i), vbDirectory) = "" Then
MkDir basePath & "\" & subFolders(i)
End If
Next i

MsgBox "フォルダとサブフォルダの作成が完了しました。"
End Sub

このように配列とループを組み合わせれば、柔軟なフォルダ構成が自動で作成できます。


存在しない親フォルダごと作成するには?

VBAの MkDir は、親フォルダが存在しないとエラーになります。
そこで、親フォルダから順に作成する処理を組み込む必要があります。

以下は、指定したパスをすべて作成する関数の例です。

Sub CreateFullPathFolder()
Dim targetPath As String
targetPath = "C:\Users\YourName\Desktop\プロジェクト\2025\資料"

CreateFoldersRecursively targetPath
End Sub

Sub CreateFoldersRecursively(ByVal folderPath As String)
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")

If Not fso.FolderExists(folderPath) Then
fso.CreateFolder folderPath
MsgBox "フォルダ作成完了:" & folderPath
Else
MsgBox "フォルダはすでに存在します:" & folderPath
End If
End Sub

このようにFileSystemObjectを使うことで、階層構造のあるパスの作成も可能になります。


トラブル対策:エラー処理を加える方法

VBAでフォルダを作成する際、意図せずエラーが起こることもあります。
例えば、フォルダ名に使用できない文字(\ / : * ? ” < > |)が含まれていたり、アクセス権がなかったりする場合です。

以下のようにエラーハンドリングを加えると安心です。

Sub CreateFolderWithErrorHandling()
On Error GoTo ErrorHandler

Dim folderPath As String
folderPath = "C:\Users\YourName\Desktop\TestFolder"

If Dir(folderPath, vbDirectory) = "" Then
MkDir folderPath
MsgBox "フォルダを作成しました。"
Else
MsgBox "すでに存在しています。"
End If

Exit Sub

ErrorHandler:
MsgBox "エラーが発生しました:" & Err.Description
End Sub

フォルダ作成を業務に活用するアイデア

VBAでのフォルダ作成は、以下のような業務に応用できます。

  • 月次レポート用フォルダの自動作成
  • 顧客別フォルダの一括生成
  • 複数部門ごとの共有フォルダ作成
  • バックアップ先フォルダの整理

Excelのデータと連携すれば、名前や部署、プロジェクト名などをもとに動的にフォルダを生成することも可能です。


まとめ

VBAを使えば、面倒なフォルダ作成作業を簡単に自動化できます。
基本構文を覚えれば、日付や階層、エラー処理付きなど、さまざまな形で業務に応用できます。

ぜひご紹介したサンプルコードを使って、日々の業務を効率化してみてください。
小さな自動化の積み重ねが、大きな時間短縮と業務改善につながります。

タイトルとURLをコピーしました