[英]How to execute a vba procedure in your current workbook against another workbook
[英]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.