VBA excel – 如何在不保存第一个文件的情况下“保存”文件

我有一个名为sth_A的工作簿,其中A是以dd-mm-yyyy格式显示今天的date。 几乎每天我都打开这个工作簿并进行更改,然后使用今天的date( A )更新文件的名称。

所以我创build了一个Workbook_BeforeClose事件,并打算在其中编写一些代码,每次closures文件时都会自动重命名我的文件。 我使用Workbook.SaveAs方法,但是这也保留了旧文件。

有没有办法重新命名一个打开的文件,或保存,而不保留原来的,或另一个aproach会做我想要的一个优雅的方式?

码:

 Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.SaveAs "sth" & Format(Date, "dd-mm-yyyy") & ".xlsm", FileFormat:=52, CreateBackup:=False End Sub 

也:

 Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.SaveAs ThisWorkbook.path & "/sth" & Format(Date, "dd-mm-yyyy") & ".xlsm", FileFormat:=52, CreateBackup:=False End Sub 

PS我想在任何情况下删除/ overwriten第一个文件。 不仅如果它与新的名称相同。

保存你的工作簿,并Kill旧的(基本上是@Canute说的)。

 Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim sOldName As String sOldName = ThisWorkbook.FullName ThisWorkbook.SaveAs ThisWorkbook.Path & Application.PathSeparator & _ "sth" & Format(Date, "dd-mm-yyyy") & ".xlsm", FileFormat:=52, CreateBackup:=False Kill sOldName End Sub 

如果您想在closures工作簿事件中执行此操作,

  1. 首先,将打开的工作簿全名保存在一个variables中(比如oldWorkbook)
  2. 在打开的工作簿上进行保存并添加date时间戳(这是您的新工作簿)
  3. 删除您以前在variablesoldWorkbook中存储path的工作簿。

希望这可以帮助。

添加禁用警报。

 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.DisplayAlerts = False ThisWorkbook.SaveAs "sth" & Format(Date, "dd-mm-yyyy") & ".xlsm" End Sub