Excelで資料を管理していると、「このファイル、いつ更新したっけ?」と気になる場面がありますよね。プロパティを開けば確認できますが、毎回開くのは面倒です。この記事では、ファイルの最終更新日・作成日をセルに自動表示する方法を、コピペですぐ使える形で紹介します。一度設定すれば、以降はシートを開くたびに更新日が一目でわかる状態になります。初心者の方でも迷わないよう、つまずきやすいポイントも先回りして解説します。
▲ Excel サンプル
標準関数だけでは保存日時を取得できない
まず押さえておきたいのが、TODAY()やNOW()ではファイルの保存日時を取得できないという点です。
TODAY()… 今日の日付を返すNOW()… 現在の日付と時刻を返す
これらは「今この瞬間」を返すだけで、ファイルを保存した日時とは無関係です。保存日時を取り出すには、この後紹介するマクロ関数かVBAが必要になります。
方法1:4.0マクロ関数で最終更新日を表示する
VBAを書かずに済ませたい場合は、「4.0マクロ関数」という古い機能を使う裏ワザがあります。
- 「数式」タブ →「名前の定義」を開く(※「名前の定義」ダイアログが開きます)
- 名前に「更新日時」と入力
- 「参照範囲」に次の式を入力
=GET.DOCUMENT(151)
GET.DOCUMENTはブックの情報を返すマクロ関数で、引数151で最終保存日時を取得できます。定義後、セルに=更新日時と入力すると保存日時(シリアル値)が表示されるので、セルの書式を「日付」に変えてください。
ただし、この方法にはクセがあります。マクロ有効ブック(.xlsm)でしか動作せず、再計算のタイミングでしか値が更新されません。また、GET.DOCUMENTの引数番号は環境によって挙動が異なる場合があり、思った値が出ないこともあります。うまく動かないときは無理せず、次のVBAの方法に進むのが確実です。
方法2:VBAで作成日・最終更新日の両方を表示する
こちらが本命です。VBAなら、作成日と最終更新日の両方を安定して取得できます。
手順1:VBEを開く
Alt + F11キーでVBE(Visual Basic Editor)を起動し、メニューの「挿入」→「標準モジュール」を選びます。
手順2:コードを貼り付ける
' 最終更新日を返すユーザー定義関数
Function LastModified() As Date
LastModified = FileDateTime(ThisWorkbook.FullName)
End Function
' 作成日を返すユーザー定義関数
Function CreatedDate() As Date
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
CreatedDate = fso.GetFile(ThisWorkbook.FullName).DateCreated
End Function
FileDateTime… 最終更新日時を返すVBA組み込み関数。1行で書けて手軽FileSystemObjectのDateCreated… 作成日時を取得。組み込み関数には「作成日」を返すものがないため、こちらを使います
手順3:セルで関数を使う
VBEを閉じて、任意のセルに次のように入力します。
=LastModified() =CreatedDate()
日付として表示されない場合は、セルの書式を「ユーザー定義(yyyy/mm/dd hh:mm)」に変更してください。
つまずきやすいポイントと対処法
未保存の新規ブックでは動かない
GET.DOCUMENTもVBAの関数も、一度も保存していないブックでは空欄やエラーになります。ファイルとして保存されて初めてパスが確定するためです。まず一度保存してから試してください。
マクロのセキュリティ警告が出たら
ファイルを開いた際に「セキュリティの警告 コンテンツの有効化」というバーが表示されたら、「コンテンツの有効化」をクリックしないとマクロが動きません。自分で作ったファイルであれば有効化してOKです。
保存直後に反映させたいとき
ユーザー定義関数は再計算のタイミングでしか更新されません。関数の先頭に次の1行を入れると再計算のたびに実行されます。
Application.Volatile
ただし、「保存」=「再計算」ではないため、これだけでは保存直後の値と完全には一致しません。厳密に保存の瞬間を反映したい場合は、Workbook_BeforeSaveイベントでセルの値を書き換える方法が確実です。
.xlsm形式で保存する
VBAを含むファイルは、必ずマクロ有効ブック(.xlsm)で保存してください。通常の.xlsx形式で保存するとマクロが削除されます。保存時のダイアログで「Excel マクロ有効ブック」を選びましょう。
まとめ
結論:確実にやりたいならVBAのユーザー定義関数一択です。
- 標準関数(TODAY・NOW)では保存日時は取得できない
- 手軽さ重視で、.xlsmでも構わないなら4.0マクロ関数(GET.DOCUMENT)が使える。ただし環境依存のクセあり
- 作成日も含めて確実に取得したいならVBA一択
- 未保存ブックでは動かない/マクロは有効化が必要/保存は必ず.xlsm形式
日付管理は地味ですが、ファイルの信頼性を高める大切な作業です。まずはVBAの方法から試して、更新履歴が一目でわかるExcelファイルを作ってみてください。
関連記事
- Excelで日付が「45658」など数字になる原因と直し方【3パターン】
- Excelで数字が「E+11」に勝手に変わる!元に戻す&防ぐ全方法【電話番号・コード対応】
- Excelで「####」が表示される原因と直し方|列幅を広げても消えない時も解決
- Excelの「1900/1/0」を消す3つの方法|空白セル・計算結果0を一発解決
- 【Excel】文字列の数字を一瞬で数値に変換する4つの方法|SUMで0になる問題を解決
- Excelのセルに =CLAUDE_ASK と書くだけ|xlwingsでAIを表計算に組み込む
この記事を読んだ方におすすめ
10日エントリー&楽天カード決済ポイント最大12倍+クーポン 送料無料 OGK技… ¥11,999
よく一緒に購入されている商品10日エントリー&楽天カード決済ポイント最大16,280円10日エントリー&楽天カード決済ポイント最大12,970円~10日エントリー&楽天カード決済ポイント最大19,48…
楽天市場で詳細を見る → 10日エントリー&楽天カード決済ポイント最大12倍+クーポン 送料無料 OGK技…