通过VSTO中断运行Excel宏

时间:2012-09-30 22:36:50

标签: excel vsto

我通过VSTO运行Excel作为计算引擎(无用户交互),并希望能够以编程方式取消长时间运行的宏。

我目前的做法是将阻塞调用放在一个单独的线程上运行宏(Application.Run(“MyMacro”)),然后尝试从主线程中断它。

似乎没有为此目的构建方法调用,如Application.Interrupt(),所以我试图以编程方式触发按下CTRL + Break或ESC时发生的键盘中断。

目前的代码如下:

Application.CalculationInterruptKey = XlCalculationInterruptKey.xlAnyKey;
Application.EnableCancelKey = XlEnableCancelKey.xlInterrupt;

Application.SendKeys("{ESC}", false); //have tried with true as second argument 

在这种情况下,最后一行的代码块在宏完成之前不会执行。

我还尝试获取Excel的进程挂钩,将其设置为活动进程/窗口并调用SendKeys但未成功。

由于这需要是执行任何宏的通用解决方案,因此我无法修改或提供有关宏内容的任何保证。

有什么想法吗?

谢谢,

PS我也试过发送CTRL + BREAK键盘命令,如Application.SendKeys(“^ {BREAK}”,false);调试器在此行上暂停,直到宏完成执行,因此似乎阻止Application对象处理任何其他命令,直到宏完成。

0 个答案:

没有答案