【问题标题】:VBA excel - How to 'saveas' file without preserving the first fileVBA excel - 如何在不保留第一个文件的情况下“保存”文件
【发布时间】:2017-09-18 20:14:20
【问题描述】:

我有一个名为 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

附:在任何情况下,我都希望删除/覆盖第一个文件。不仅是它与新的名称相同。

【问题讨论】:

    标签: vba excel


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

      1. 首先,将打开的工作簿全名保存在一个变量中。(比如 oldWorkbook)
      2. 在打开的工作簿上另存为并附加您的日期时间戳。(这是您的新工作簿)
      3. 删除以前在变量中存储路径的工作簿 旧工作簿。

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        添加禁用警报。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-12-11
          • 2022-11-21
          • 1970-01-01
          • 2019-08-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多