页脚中的最后保存日期(Microsoft Excel)
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培训的来源。
本技巧(11099)适用于Microsoft Excel 2007、2010和2013。您可以在以下Excel的较旧菜单界面中找到此技巧的版本:`link:/ excel-Last_Saved_Date_in_a_Footer [页脚中的最后保存日期]。