そのブックの最終保存日時を知りたいことがあります。
下の図は、あるプロジェクトの表紙で、ここにはプロジェクト全体の構成やその解説、共通のスイッチの説明、等々が書かれていて、各ワークシートでの操作が終わるといつもここに戻ってくるようになっています。
設定内容をいろいろと変えて、その結果を調べようというプロジェクトなので、前回がいつだったかというのがわかると、少しは安心感があります。
そこで、右肩に小さく「最終データ保存日時」を表示することにしました。
どの程度役に立つかは微妙なところですが、それほど負担がかかることでもなさそうなので、やってみました。

エクスプローラーでファイルのプロパティを開いた際に、「更新日時」として出てくる日時を取得して表示するだけのものです。
これを取得するのには、いくつも方法があるようですが、3通りを試してみました。
(1) は Workbook オブジェクトが持っている BuiltinDocumentProperties プロパティを使う方法。
(2) は FileSystemObject で file オブジェクトを取得し、その DateLastModified プロパティを読むという方法。
(3) は VBA の FileDateTime() 関数を使って日時を取得するという方法。
今回の目的には、どれも同じ結果を返してくれます。それぞれのメリット・デメリットはあるのでしょうが、とりあえずもっとも単純な (3) を使うことにしました。
一応、3通りの関数を列挙しておきます。
標準モジュール ShowTimeStamp()
'----- ファイル更新日時の表示
Public Sub ShowTimeStamp()
Range("LastSaveDateTime") = getLastModified3()
End Sub
'----- ファイル更新日時の取得 3通り
'--- (1) BuiltinDocumentProperties を使う
Private Function getLastModified()
getLastModified = ThisWorkbook.BuiltinDocumentProperties("Last Save Time").value
End Function
'--- (2) FileSystemObject を使う
Private Function getLastModified2()
Dim fileFullPath As String
Dim file As Object
fileFullPath = ThisWorkbook.path & "" & ThisWorkbook.name
With CreateObject("Scripting.FileSystemObject")
Set file = .GetFile(fileFullPath)
End With
getLastModified2 = file.DateLastModified
End Function
'--- (3) FileDateTime を使う
Private Function getLastModified3()
With ThisWorkbook
getLastModified3 = FileDateTime(.path & "\" & .name)
End With
End Function(3) を使うことにすると、次の5行でタイムスタンプの表示ができてしまいます。
シートオブジェクト ThisWorkbook の Workbook_Open() と Workbook_BeforeSave() イベントでこの ShowTimeStamp を呼ぶようにしておけば、それでいつも最終保存日時を表示してくれます。
標準モジュール ShowTimeStamp()
Public Sub ShowTimeStamp()
With ThisWorkbook
Range("LastSaveDateTime") = FileDateTime(.path & "\" & .name)
End With
End Sub