每次Mathew关闭工作簿时,他都希望Excel创建该工作簿的带日期的备份,这意味着将使用包含日期的文件名来保存它。因此,如果他保存“ AnyWorkbookName”,则不仅会保存该名称,还会保存“ AnyWorkbookName [Today’s Date&Time]”的名称。 Mathew确信这需要使用VBA来完成,但是他不确定如何去做。

可以开发许多宏来执行此任务。它们大多数都是某个主题的变体(可以这么说),因此就我们的目的而言,一个示例就足够了。

在关闭工作簿之前,下面的宏将保存工作簿,并在文件名的末尾附加日期和时间。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim sFileName As String     Dim sDateTime As String

With ThisWorkbook         sDateTime = " (" & Format(Now, "yyyy-mm-dd hhmm") & ").xlsm"

sFileName = Application.WorksheetFunction.Substitute _           (.FullName, ".xlsm", sDateTime)

.SaveCopyAs sFilename     End With End Sub

宏将日期和时间字符串放到sDateTime变量中。然后使用SUBSTITUTE工作表功能将其插入工作簿的文件名中。 (日期/时间字符串实际上是在文件名扩展名之前插入的。)宏假定工作簿正在保存为XLSM文件,因为该工作簿必须包含宏,例如要进行保存的宏。

宏应放在工作簿的ThisWorkbook模块中。

这样可以确保它将在关闭工作簿之前执行。

也有可以执行此任务的第三方加载项。以下是您可能要检查的一些内容。

http://www.jkp-ads.com/Download.asp#AutoSafe http://www.asap-utilities.com

注意:

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

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

本提示(13195)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。