2

我可以通过 C# 调用 VBA/Excel 宏。如果用户(在我的例子中是一个 C# 程序)输入了无效值,则会出现一个消息框。这没问题,因为我可以通过 C# 超时并据此做出决定(即确定是否出现消息框)。问题是出现消息框时excel没有正确关闭。我正在使用此代码关闭 excel:

excelApp.DisplayAlerts = false;
Marshal.FinalReleaseComObject(someSheet);
excelWorkbook.Close(Type.Missing, Type.Missing, Type.Missing);
Marshal.FinalReleaseComObject(excelWorkbook);
GC.Collect();
GC.WaitForPendingFinalizers();

一切都关闭了,但 excel 和消息框保持打开状态。我有办法从 c# 关闭消息框吗?

4

2 回答 2

0

我已成功将 Microsoft 解决方案用于我实施的办公自动化软件。它并不优雅,并且带有先决条件(消息框应该保持焦点,并且在自动化运行时必须没有用户交互),但它可以工作 - 使用SendKeys 方法单击框!

于 2013-08-31T20:34:32.540 回答
0

一个更好的解决方案在这里

使用

excelApp.DisplayAlerts = false 

避免 Excel 应用程序创建消息框,让您的应用程序根据需要处理它。

于 2015-08-19T17:39:45.380 回答