我在按钮下有以下代码。单击该按钮只会关闭当前的Excel工作表,而不是整个Excel应用程序。
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Application.Quit
注意:我没有打开其他工作表。
仍然出现以下窗口。
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9NazVlei5qcGcifQ==” alt =“在此处输入图像描述”>
我遇到这个问题,并通过输入Workbook_BeforeClose()
解决了它:
ThisWorkbook.saved = true
从例程中删除Application.DisplayAlerts = True
。
来自Application.Quit Method
的帮助:
这将避免任何(可能是隐藏的)提示阻止excel完全关闭如果使用此方法时未保存的工作簿已打开,Microsoft Excel将显示一个对话框,询问您是否要保存更改。您可以通过在使用Quit方法之前保存所有工作簿或将DisplayAlerts属性设置为False来防止此问题。当此属性为[[False时,当您退出未保存的工作簿时,Microsoft Excel不会显示对话框。它退出而不保存它们。
代替Personal.xlsb创建并使用模块。这是一个更好的选择。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Quit
ThisWorkbook.Saved = True
End Sub
根据Norie,您可能不再打开工作簿,因此将永远不会执行Application.Quit。
[AlphaFrog因此建议:
Application.DisplayAlerts = False
If Application.Workbooks.Count = 1 Then
Application.Quit
Else
ActiveWorkbook.Close
End If
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.Quit
这将使excel完全关闭,而无需保持打开“幽灵”窗口。
Application.EnableEvents = False
Application.DisplayAlerts = False
If Application.Workbooks.Count = 1 Then 'Close Excel application
ThisWorkbook.Save
Application.Quit
Else 'Close the active workbook
With ActiveWorkbook
.Close Savechanges:=True
End With
End If
无论出于何种原因,如果未启用AccessVBOM选项,Application.Quit都将以静默方式失败。它不是开箱即用的,可以通过Windows策略由网络管理员设置/取消设置。
您可以通过遍历“ Excel选项”->“信任中心”->“信任中心设置”->“宏设置”->“信任对VBA项目对象模型的访问,在GUI中找到此选项”。或programmatically。
由于我们都喜欢代码,因此在此示例中,我们从C#interop运行Excel并调用quit函数。
using Excel = Microsoft.Office.Interop.Excel;
using Marshal = System.Runtime.InteropServices.Marshal;
Excel.Application app = new Excel.Application();
app.Visible = false;
app.DisplayAlerts = false;
// this will hang if AccessVBOM is not enabled
app.Quit();
Marshal.ReleaseComObject(app);