我读过的所有内容都表明这是不可能的,但也许有人知道我不知道的事情。
我用 C# 开发了中间件,用于通过 COM 或 .NET 接口运行不同的程序。其他程序允许您异步运行它们,并在必要时中断计算。
程序选项之一是 Excel,中间件将启动 Excel 并运行用户命名的 VBA 代码。我想像其他程序一样中断从 C# 运行 Excel VBA。似乎没有任何方法可以做到这一点,因为 Run(macro) 调用被阻塞并在 VBA 代码完成时返回。
有 _Run2(macro) 和 _Wait() 调用,这表明可能有一些方法可以做到这一点,但这些是供内部使用的,因此它们故意记录得很差。