如果查看工作簿中存储的属性,您会注意到Excel维护了大量有关该文件的信息。其中一项是日期和时间,简称为“已修改”。许多人将其称为“上次修改”日期,但这确实反映了工作簿的上次保存时间。

如果要在工作簿中使用此日期(也许在页眉或页脚中),则可以使用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专家会知道答案。)如果遇到此问题,可以采用两种方法。首先,您可以将440值替换为另一个值(-2147467259)。第二个选项(假设您已经至少保存了工作簿一次)是使用其他宏。以下内容从文件本身读取“最后修改”属性,并将该信息存储在标题中:

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_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(2285)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: