繁体   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