CELLNETS Excel開発の専門会社

VBAでフォルダを作成して開く方法|日付・時刻(yymmdd_hhmmss)の名前を付ける【VBA入門】

VBA処理でフォルダやファイルを出力するとき、日付や時刻を保存名称にすると管理がしやすいため、「yymmdd_hhmmss」形式で命名するケースがとても多いです。

VBA処理でフォルダやファイルを出力するとき、日付や時刻を保存名称にすると管理がしやすいため、「yymmdd_hhmmss」形式で命名するケースがとても多いです。

みなさん、こんにちは。セルネッツ竹本です。
今回は、「フォルダやファイル名の出力名」をテーマに、解説をしたいと思います。

結論から言うと、日付と時刻の名前は「Format(Now, “yymmdd_hhmmss”)」で作り、MkDirステートメントでフォルダを作成します。
作成したフォルダは「CreateObject(“Shell.Application”).Open」の1行で開けます。

この記事では、次のことがわかります。

  • Format関数で「yymmdd_hhmmss」形式の名前を作る方法
  • MkDirでフォルダを作成し、同じ名前があるときのエラーを防ぐ方法
  • 作成したフォルダを自動で開く3つの書き方と、そのまま使える完成形のコード

出力ファイルの管理に

日付付きフォルダへの自動出力で管理が楽に

  • 出力したファイルのどれが最新か分からない
  • 保存のたびにフォルダを手で作って名前を付ける
  • 大量のブックを階層ごとに出力したい

そのお悩み、ファイル出力の自動化で解決できます。Excel専門のシステム開発会社『セルネッツ』なら、日付と時刻の入ったフォルダの自動作成とブック出力をまとめられます。完了時に出力先のフォルダを開く仕組みも作れます。

\Excel専門特化 × 低価格 × スピード対応/

フォルダ名に日付と時刻を付ける定番の命名ルール

出力先のフォルダ名に作成日時を入れると、いつ出力したものかが名前だけでわかります。

システム仕様によっては、指定された階層フォルダに、大量のExcelブックを順次出力したり、フォルダ内にさらにサブ階層フォルダを作りファイル出力することもあります。

このとき、出力するフォルダ名やファイル名から、特定の情報が一瞬で読み解ける工夫があると、検証性という面でも、運用面でも利便性が高まります。

良くつかう定番の命名は、いつ作成されたコンテンツなのかが時系列で把握できるよう「年月日+時刻」を付与するケースが一般的です。

もちろんコード設計という考え方がありますので、原則、「桁数の統一」が前提となります。

桁数がそろっていれば、エクスプローラーで名前順に並べるだけで、作成した順に並びます。
桁数や区分の決め方は、採番(コード設計)のルールの決め方で詳しく解説しています。

Format関数で「yymmdd_hhmmss」を作る

日付と時刻を、Format関数で決まった桁数の文字列に変換します。

'※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Sub M_日付と時刻変換(P_Get日付, P_Get時刻)
'※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

Dim S_yymmdd As String
Dim S_hhmmss As String

S_yymmdd = Format(Date, "yymmdd")
S_hhmmss = Format(Time, "hhmmss")

Debug.Print S_yymmdd
Debug.Print S_hhmmss
Debug.Print S_yymmdd & "_" & S_hhmmss

End Sub

結果は上から順に以下のように得られました。

240624
111258
240624_111258

あとは必要に応じて、運用しやすい名前を決めれば良いと思います。

日付と時刻を1つの名前にするなら、Nowを使って1行で書けます。
DateとTimeを別々に呼ぶと、0時ちょうどをまたいだ瞬間に「前日の日付+翌日の時刻」になることがあります。Nowなら、同じ瞬間の日付と時刻を取り出せます。

Dim フォルダ名 As String
フォルダ名 = Format(Now, "yymmdd_hhmmss")     '例:240624_111258
書式記号意味例(2024/6/24 11:12:58)
yy / yyyy年(2桁 / 4桁)24 / 2024
mm月(2桁)06
dd日(2桁)24
hh時(24時間表記・2桁)11
nn(hhの直後ならmmも可)分(2桁)12
ss秒(2桁)58

「mm」は、hhの直後に置くと「分」、それ以外は「月」として扱われます。迷ったら、分は「nn」と書くと確実です。
年をまたいで長く使うフォルダなら、4桁の「yyyymmdd_hhmmss」にしておくと、並び順が崩れません。

MkDirでフォルダを作成する

フォルダの作成は「MkDir フォルダのフルパス」の1行です。ただし、同じ名前のフォルダがあるとエラーになるため、先に存在を確かめます。

Dim 新フォルダ As String
新フォルダ = ThisWorkbook.Path & "\" & Format(Now, "yymmdd_hhmmss")

'// 同じ名前のフォルダが無いときだけ作成する
If Dir(新フォルダ, vbDirectory) = "" Then
    MkDir 新フォルダ
End If
  • MkDirには、ドライブから始まるフルパスを渡します。フォルダ名だけを渡すと、カレントフォルダ(現在の作業フォルダ)に作られてしまいます
  • Dir(パス, vbDirectory)は、フォルダがあればその名前、無ければ空の文字列を返します
  • 親フォルダをユーザーに選んでもらう場合は、フォルダ選択ダイアログの使い方と組み合わせます

(参考:Microsoft Learn「MkDir ステートメント」)

作成したフォルダを自動で開く

処理の最後に出力先のフォルダを開いておくと、利用者がフォルダを探す手間がなくなります。

【Point】

特定フォルダ内に新規フォルダを作成する仕様であれば、プログラム処理が完了時に、当該フォルダを開いた状態で完了メッセージを表示すると、毎回、フォルダを開く手間が省けるので、利便性が向上します。

以下の1文記述で、P_指定フォルダがOpenします。

'※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Sub M_フォルダを開く(P_指定フォルダ)
'※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

CreateObject("Shell.Application").Open P_指定フォルダ & "\"

End sub

フォルダを開く方法は、ほかにもあります。用途に合わせて選びます。

書き方特徴
CreateObject(“Shell.Application”).Open パス1行で書ける。パスにスペースがあっても、そのまま渡せる
Shell “explorer.exe “”” & パス & “”””, vbNormalFocusエクスプローラーを直接起動する。スペースを含むパスは「”」で囲む必要がある
ThisWorkbook.FollowHyperlink パスExcelのハイパーリンクとして開く。Excel以外のVBAでは使えない

作成から開くまでをまとめた完成形のコード

ここまでの処理を1つにまとめると、次のようになります。ブックと同じ場所に日時名のフォルダを作り、完了したら開きます。

Sub M_日時フォルダを作成して開く()

    Dim 新フォルダ As String

    '// ブックと同じ場所に「yymmdd_hhmmss」のフォルダ名を作る
    新フォルダ = ThisWorkbook.Path & "\" & Format(Now, "yymmdd_hhmmss")

    '// 同じ名前のフォルダが無いときだけ作成する
    If Dir(新フォルダ, vbDirectory) = "" Then
        MkDir 新フォルダ
    End If

    '// (ここに、ブックやファイルを出力する処理を書く)

    '// 出力先のフォルダを開いて、完了メッセージを出す
    CreateObject("Shell.Application").Open 新フォルダ & "\"
    MsgBox "出力が完了しました。" & vbCrLf & 新フォルダ

End Sub

フォルダ作成でつまずきやすい注意点

MkDirは失敗するとエラーで止まります。よくある原因は次のとおりです。

起きること原因対策
エラー75「パス名/ファイル名が無効です」同じ名前のフォルダがすでにある(同じ秒に2回実行した場合など)Dirで存在を確かめる。続けて実行するなら秒の後ろに連番を付ける
エラー76「パスが見つかりません」親フォルダが存在しない親フォルダから1階層ずつ作る
名前が正しく作れない「/」「:」などフォルダ名に使えない文字が入っているFormat(Now)をそのまま使わず、”yymmdd_hhmmss”のように書式を指定する
OneDrive上のブックでエラーになるThisWorkbook.Pathが「https://〜」のURLになるローカルのパスに変換してから使う

OneDriveのパスがURLになる原因と変換の方法は、OneDrive上のフォルダ指定でPATHがhttpに変わる対策で解説しています。
(参考:Microsoft Learn「トラップ可能なエラー」)

よくある質問

Q. 「2024\06\24」のような階層フォルダを一度に作れますか?

MkDirは1回で1階層しか作れません。親フォルダが無いとエラー76になるため、上の階層から順に、無ければ作る処理を繰り返します。
不要になったフォルダを消す処理は、指定したフォルダを削除する方法で紹介しています。

Q. FileSystemObjectのCreateFolderとの違いは?

どちらも1階層ずつ作る点は同じです。CreateFolderは、存在確認のFolderExistsとセットで使えるのが利点です。
同じ名前があるときは、CreateFolderではエラー58「既に同名のファイルが存在しています」になります。

Q. ファイル名にも日付と時刻を付けられますか?

付けられます。「”売上_” & Format(Now, “yymmdd_hhmmss”) & “.xlsx”」のように、名前の一部として連結します。
フルパスからフォルダ名とファイル名を取り出す方法は、フルパスをフォルダとファイル名に分割する方法をご覧ください。

まとめ|日時の名前でフォルダを作り、完了時に開く

今回のテーマは、「フォルダやファイル名の出力名」について、解説を行いました。

  • 名前は Format(Now, “yymmdd_hhmmss”) で、桁数をそろえて作る
  • MkDirの前に Dir(パス, vbDirectory) で存在を確かめる
  • 処理の最後に Shell.Application でフォルダを開くと、利用者の手間が減る

本記事が、Excel実務の効率化において、ご参考お役立てになれば幸いです。

相見積もり歓迎

ブックの一括出力ツール、費用の目安をご提示

  • データ変換は8万円〜(税別・基本料金込み)
  • 複数フォーマット変換は20万円〜
  • 命名ルールなど運用面の相談も60分無料

ブックを分けて出力するツールは、データ変換8万円〜、出力形式が複数なら複数フォーマット変換20万円〜が参考価格です(税別・基本料金込み)。相見積もりも歓迎です。Excelに向かない場合は正直にお伝えします。

\Excel専門特化 × 低価格 × スピード対応/

無料見積もり・お問い合わせはこちら

全国対応・お見積もり無料


Excel業務改善事例ショート動画

文章だけでは伝わりにくい改善事例を、ショート動画でご覧いただけます。

◆よくある質問 ◆Excel業務改善の実例 ◆VBA・マクロ活用事例

Excel業務改善事例ショート動画よくある質問など公開中

関連記事

Excelシステム開発

Excelを複数人で共同編集する方法|オンライン共有の手順と事例

更新日:2026年11月4日

Excelシステム開発

システム開発の依頼ガイド|費用相場・流れ・会社の選び方と「作りすぎない」判断軸

更新日:2026年9月24日

Excelシステム開発

予約システムの開発依頼にかかる費用相場|小規模店舗は100万円以下で作れる

更新日:2026年9月24日

Excelシステム開発

CRMシステム開発の外注費用は?依頼先の選び方と100万円以下に抑える考え方

更新日:2026年9月24日

Excelシステム開発

勤怠管理システム開発の外注費用相場|100万円以下で作る方法とプラン別料金【2026年版】

更新日:2026年9月24日

Excelシステム開発

SFAシステム開発の依頼相場は?高額SaaSに払い続ける前に知るべき「安く作る」現実解

更新日:2026年9月24日

Excelシステム開発

業務システム開発の依頼はいくら?費用相場と「100万円以下」で頼む方法

更新日:2026年9月24日

Excelシステム開発

受発注システム開発の費用相場は?外注料金の内訳と安く抑える方法を解説

更新日:2026年9月24日

Excelシステム開発

販売管理はエクセルで十分?売上管理表・発注管理表の作り方と「限界」の乗り越え方

更新日:2026年11月4日

newsite