【Excelマクロ】フォルダがなければ自動で作成するマクロ

ファイルを保存する前に「保存先のフォルダがない」と気づくことはよくあります。

マクロでファイルを出力する処理を組んだとしても、保存先のフォルダが存在しなければ、エラーになってしまいます。

このようなときに便利なのが、フォルダがなければ自動で作成するマクロです。処理の中であらかじめフォルダの存在を確認し、なければ作成することで、スムーズな自動化が可能になります。

今回はその実装方法とメリットについて紹介します。

フォルダがなければ作成する基本のコード

次のコードでは、指定したパスにフォルダが存在しない場合に、自動でフォルダを作成します。

Sub CreateFolderIfNotExists()

    Dim fso As Object
    Dim folderPath As String

    folderPath = "C:¥Test¥Output¥" ' 作成したいフォルダのパス

    Set fso = CreateObject("Scripting.FileSystemObject")

    If fso.FolderExists(folderPath) = False Then
        fso.CreateFolder folderPath
    End If

    MsgBox "処理が完了しました。", vbInformation

End Sub

このコードでは Scripting.FileSystemObject を使い、FolderExists 関数で存在チェックを行っています。
フォルダが存在しなければ、CreateFolder メソッドで新しく作成されます。

コメントの要点

  • FolderExists で存在確認
  • CreateFolder で新規作成
  • 必要なときだけ作成される安全な構造

実装するメリット

このマクロを導入することで、次のような効果があります。

  • 出力エラーを事前に防げる
  • フォルダの存在確認を自動化できる
  • 一度実行すれば再確認の必要がない
  • ファイルの出力処理とセットで使える

特に「月ごとのフォルダにレポートを保存したい」「ユーザー別にフォルダを作りたい」といった処理では、事前に手作業でフォルダを準備する手間がなくなり、業務の自動化がより現実的になります。

応用パターンも柔軟に対応可能

たとえば、日付ごとのフォルダ名を自動で作ることも可能です。次のように Format 関数を使えば、日付入りのフォルダを生成できます。

folderPath = "C:¥Test¥" & Format(Date, "yyyymmdd") & "¥"

また、サブフォルダが連続して存在しない場合でも CreateFolder は一段階ずつ作成してくれるので、深い階層でも安心して使用できます。

まとめ

フォルダの存在チェックと自動作成は、ファイル出力処理の基本的な安全対策です。マクロで安定して動作させるために、あらかじめフォルダの準備まで含めておくと、より実務で使いやすくなります。

  • Scripting.FileSystemObject を使って、フォルダの存在をチェック
  • FolderExistsCreateFolder の流れで安全に作成
  • 日付やユーザーごとのサブフォルダも自動で対応可能
  • 出力エラーを防ぎ、完全な自動化を実現できる

ファイル保存に関わる処理を組むときは、ぜひこのマクロもセットで活用してみてください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール