ブックに保存されているプロパティを見ると、Excelがファイルに関するかなりの情報を保持していることがわかります。項目の1つは、単に「変更済み」と表記されている日付と時刻です。多くの人がこれを「最終更新日」と呼びますが、実際にはブックが最後に保存された時刻を反映しています。

ブックで(おそらくヘッダーまたはフッターで)この日付を使用する場合は、BuiltinDocumentPropertiesプロパティ(ほとんど冗長に聞こえます)を使用して使用できます。次のマクロは、ドキュメントのヘッダーに適切な日付を追加します:

Sub MyHeader1()

Dim sLMD As String

On Error Resume Next

sLMD = ActiveWorkbook.BuiltinDocumentProperties("Last Save Time")

If Err = 440 Then         Err = 0         sLMD = "Not Set"

End If     sLMD = Left(sLMD, 8)

ActiveSheet.PageSetup.LeftHeader = "Last Saved: " & sLMD End Sub

このマクロには注意すべき点がいくつかあります。まず、ブックが最後に保存された日付を判別しようとします。その情報を特定できない場合は、ヘッダーを「未設定」に設定します。

このマクロではエラー処理が行われていることに注意してください。その理由は、特定のドキュメントプロパティ(この場合はBuiltinDocumentProperties)が設定されていない場合、Excelがエラーを返すためです。エラーを傍受して処理する必要があります。これはここで行われます。

ここで注意すべき別の項目があります。 Excelの一部のバージョンでは、プロパティが設定されていない場合に返されるErr値は実際には440ではなく(ここに示すように)、-2147467259などの他の奇数です。確かに、これは非常に奇妙です。なぜ440値(これは適切なエラーコードです)

ある状況では返され、別の状況では返されません、私にはわかりません。

(おそらく、他のExcelの第一人者が答えを知っているでしょう。)この問題がある場合は、2つの方法があります。まず、440の値を他の値(-2147467259)に置き換えることができます。 2番目のオプションは、ブックを少なくとも1回保存していると仮定して、別のマクロを使用することです。以下は、ファイル自体から「最終変更」属性を読み取り、その情報をヘッダーに格納します。

Sub MyHeader2()

Dim fs As Variant     Dim f As Variant     Dim sLMD As String

Set fs = CreateObject("Scripting.FileSystemObject")

Set f = fs.GetFile(ActiveWorkbook.Path & "\" & _       ActiveWorkbook.Name)

sLMD = Left(f.DateLastModified, 8)

ActiveSheet.PageSetup.LeftHeader = "Last Modified: " & sLMD End Sub

使用するマクロに関係なく、マクロを実行すると、左側のヘッダーが目的の情報に設定されることに注意してください。その情報は、マクロを再度実行するまで変更されません。したがって、ヘッダーに常に最新の日付が必要な場合は、マクロを定期的に(おそらく印刷の直前に)実行するか、ドキュメントを開くたびに実行するように設定する必要があります。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2285)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。