Lori希望工作表页脚的右侧包括工作簿的最后保存日期。每当她尝试创建公式来执行此操作时,Excel都会显示一条错误消息,指出“字符串太长”,并且她需要删除一些字符。她不确定自己是否理解为什么会发生这种情况,或者不确定如何在页脚中获取想要的日期。

没有实际的公式可以将最后保存的日期放在页脚中。

Excel无法(与Word不同)将信息的零散放置在那里。

有一种方法可以做到,但是解决方案需要使用宏。原因是因为您正在访问系统信息(Excel本身以外的信息),并且只能使用VBA等编程语言来检索信息。

一种方法是添加一些在保存工作簿时运行的代码。

该代码将使用当前日期更新所需的页脚:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _   Cancel As Boolean)



ActiveWorksheet.PageSetup.RightFooter = _       "Last Saved: " & Format(Date, "mmmm d, yyyy")

End Sub

该宏(应存储在要影响的工作簿的ThisWorkbook对象中)将更新当前活动工作表的页脚。如果要影响工作簿中的所有工作表,则应按顺序对宏进行一些小的更改:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _   Cancel As Boolean)

Dim sht As Worksheet

For Each sht In Sheets         sht.PageSetup.RightFooter = _           "Last Saved: " & Format(Date, "mmmm d, yyyy")

Next End Sub

如果今天是2011年12月12日,则在运行宏(保存时会自动完成)后,右页脚将全部设置为“上次保存:2011年12月12日”。

您还可以依靠存储在Excel内置属性中的文件保存日期。将日期放入页脚的方式如下:

Sub RightFooterLastSaved()

ActiveSheet.PageSetup.RightFooter = _        ActiveWorkbook.BuiltinDocumentProperties(12)

End Sub

此宏的缺​​点是您需要记住要定期运行它,因此它不像以前的方法那样自动运行。但是,您可以将单行放在宏的中心,放入Workbook_BeforePrint事件处理程序中。

您可以使用另一种方法。这涉及从Windows请求保存文件的实际日期和时间。

Private Sub Workbook_Open()

Dim sTemp As String     Dim sht As Worksheet

sTemp = FileDateTime(ActiveWorkbook.FullName)

sTemp = "Last Saved: " & sTemp     For Each sht In Sheets         sht.PageSetup.RightFooter = sTemp     Next sht End Sub

此宏设计为在首次打开工作簿时运行—将其保存为ThisWorkbook对象的Workbook_Open过程。宏的主力是调用FileDateTime函数的行。

此功能可用于确定保存任何文件的日期和时间。它需要文件的完整路径名,该路径名由ActiveWorkbook对象的FullName属性提供。然后将日期和时间放在工作簿中所有工作表的右脚。

还要记住,您可以在页眉或页脚的每个部分中放置的内容的限制大约为250个字符。因此,如果您调整宏以将更多信息添加到页脚的右侧,请确保它不会累加太多的字符,否则您可能会遇到宏问题。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

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