doodle-on-web

自分で調べたことや、仕事の中で質問されたことなどをまとめています。

【コピペOK】Excelで最終更新日・作成日を自動表示する2つの方法

スポンサーリンク

Excelで資料を管理していると、「このファイル、いつ更新したっけ?」と気になる場面がありますよね。プロパティを開けば確認できますが、毎回開くのは面倒です。この記事では、ファイルの最終更新日・作成日をセルに自動表示する方法を、コピペですぐ使える形で紹介します。一度設定すれば、以降はシートを開くたびに更新日が一目でわかる状態になります。初心者の方でも迷わないよう、つまずきやすいポイントも先回りして解説します。

【コピペOK】Excelで最終更新日・作成日を自動表示する2つの方法のサンプル ▲ Excel サンプル

標準関数だけでは保存日時を取得できない

まず押さえておきたいのが、TODAY()NOW()ではファイルの保存日時を取得できないという点です。

  • TODAY() … 今日の日付を返す
  • NOW() … 現在の日付と時刻を返す

これらは「今この瞬間」を返すだけで、ファイルを保存した日時とは無関係です。保存日時を取り出すには、この後紹介するマクロ関数かVBAが必要になります。

方法1:4.0マクロ関数で最終更新日を表示する

VBAを書かずに済ませたい場合は、「4.0マクロ関数」という古い機能を使う裏ワザがあります。

  1. 「数式」タブ →「名前の定義」を開く(※「名前の定義」ダイアログが開きます)
  2. 名前に「更新日時」と入力
  3. 「参照範囲」に次の式を入力
=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行で書けて手軽
  • FileSystemObjectDateCreated … 作成日時を取得。組み込み関数には「作成日」を返すものがないため、こちらを使います

手順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ファイルを作ってみてください。


関連記事


この記事を読んだ方におすすめ

10日エントリー&楽天カード決済ポイント最大12倍+クーポン 送料無料 OGK技…

10日エントリー&楽天カード決済ポイント最大12倍+クーポン 送料無料 OGK技… ¥11,999

よく一緒に購入されている商品10日エントリー&楽天カード決済ポイント最大16,280円10日エントリー&楽天カード決済ポイント最大12,970円~10日エントリー&楽天カード決済ポイント最大19,48…

楽天市場で詳細を見る → 10日エントリー&楽天カード決済ポイント最大12倍+クーポン 送料無料 OGK技…