簡體   English   中英

VBA Excel-如何在不保留第一個文件的情況下“保存”文件

[英]VBA excel - How to 'saveas' file without preserving the first file

我有一本名為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

PS我在任何情況下都希望刪除/覆蓋第一個文件。 不僅具有與新名稱相同的名稱。

保存您的工作簿並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. 首先,將打開的工作簿全名保存在變量中。(例如oldWorkbook)
  2. 在打開的工作簿上進行另存為,並附加日期時間戳。(這是您的新工作簿)
  3. 刪除以前在變量oldWorkbook中存儲路徑的工作簿。

希望這可以幫助。

添加禁用警報。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM