宏调用后通过C#检测/关闭excel消息框

时间:2013-08-31 08:34:54

标签: c# .net interop office-interop excel-interop

我可以通过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();

一切都关闭但是优秀,消息框保持打开状态。我有办法从c#中关闭消息框吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

更好的解决方案是here

使用

excelApp.DisplayAlerts = false 

避免Excel App创建消息框,允许您的应用根据需要处理它。