VBA excel - 如何' saveas'文件没有保留第一个文件

时间:2017-09-18 06:15:48

标签: excel vba excel-vba

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

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

有没有办法重命名一个打开的文件,或者在没有保留原始文件的情况下保存,或者以优雅的方式做我想要的其他方法?

代码:

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

P.S。我想在任何情况下删除/覆盖第一个文件。它不仅与新的名称相同。

3 个答案:

答案 0 :(得分:1)

保存您的工作簿和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

答案 1 :(得分:0)

如果要在关闭工作簿事件中执行此操作,那么

  1. 首先,将打开的工作簿全名保存在变量中(比如oldWorkbook)
  2. 在打开的工作簿上执行保存并附加日期时间戳。(这是您的新工作簿)
  3. 删除先前在变量中存储路径的工作簿 oldWorkbook。
  4. 希望这有帮助。

答案 2 :(得分:0)

添加禁用提醒。

.