簡體   English   中英

關閉工作簿並在另一個工作簿中完成 VBA 程序

[英]Close workbook and finish VBA procedure in another workbook

我使用以下 VBA 創建所用電子表格的副本:

Sub Files()
ActiveWorkbook.SaveCopyAs "C:\Users\" & Environ("Username") & "\Desktop\testfile.xlsm"
Workbooks.Open "C:\Users\" & Environ("Username") & "\Desktop\" & "testfile.xlsm", UpdateLinks:=False
ThisWorkbook.Close SaveChanges = False
MsgBox ("File saved successfully on desktop.")
End Sub

此代碼將 Excel 文件的副本放在桌面上。 完成此操作后,將打開新創建的 Excel 文件並關閉另一個文件。
但是,另一個的關閉也會導致 VBA 停止; 因此, MsgBox ("File saved successfully on desktop.")不再出現。

我如何更改 VBA 以便它在新打開的電子表格中繼續並顯示消息框?

ThisWorkbook.Close SaveChanges = False關閉工作簿。 VBA 代碼在里面,因此MsgBox不會出現。

最簡單的解決方案是像這樣更改代碼:

MsgBox ("File saved successfully on desktop.")
ThisWorkbook.Close SaveChanges = False

為了確保您的 MsgBox 不會“撒謊”,請引入錯誤捕獲:

Sub Files()

    On Error GoTo Files_Error

    ActiveWorkbook.SaveCopyAs "C:\Users\" & Environ("Username") & "\Desktop\testfile.xlsm"
    Workbooks.Open "C:\Users\" & Environ("Username") & "\Desktop\" & "testfile.xlsm", UpdateLinks:=False
    MsgBox ("File saved successfully on desktop.")
    ThisWorkbook.Close SaveChanges = False

    On Error GoTo 0
    Exit Sub

Files_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Files of Sub Modul1"

End Sub

如果在MsgBox之后無法保存文件,則會彈出一個新的MsgBox

暫無
暫無

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

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