从外部退出Excelmacros(从GUI而不是从macros)

我有一个程序(GUI)与Excel接口来执行macros。 我们使用Microsoft.Office.Interop.Excel来调用/运行macros,这很好。

我无法弄清楚是从GUI中取消macros的好方法。

我们的一个想法是使用运行macros的excel.applicationvariables向工作簿中的特定单元格写入“停止”值,在macros中(它们大部分都是循环),请检查“停止”值在那个牢房里

这使我的GUI崩溃

The program '[2188] BVLReports.vshost.exe: Managed' has exited with code -336589910 (0xebf00baa).

而且excel被捆绑起来,不会回应。 我知道如何从macros中Exit Sub如果“停止”值存在,所以我不需要如何检查/取消从macros内的答案。 任何想法更好的方式来写这个“停止”价值或更好的方式来取消外部的macros?

谢谢

这可能是神秘的Excel Application.CheckAbortfunction的情况?

Application.CheckAbort

根据帮助Application.Checkabort应该停止重新计算,除了一个指定的范围。 它不这样做。 显然它会引发一个运行时错误,如果在应用程序消息队列中有挂起的中止消息(鼠标点击,esc键等)。 该参数指定是否吃掉消息或将其留在队列中。 其目的是允许长时间运行的VBA计算以与Excel计算相同的方式中断。

Application.CheckAbort([KeepAbort])

也许你可以使用SendKeys函数将键盘输出发送到excel并以这种方式杀死它。

希望这可以帮助。

请享用!