【发布时间】:2014-10-02 08:04:05
【问题描述】:
类似于Errors when calling certain Excel VBA macros from C#,我想实现一个错误处理程序,它将捕获 VBA 错误并优雅地返回。
基本上,我在 Excel 中打开了一个任意宏工作簿,如果宏失败(即您收到带有“结束”和“调试”按钮的 VBA 错误对话框),我希望我的应用程序改为在内部处理它使用 VBA 的对话框。这主要是为了让有问题的书不会冻结处理(我正在使用各种队列来处理多个工作簿)。
我已经知道 DisplayAlerts=False 属性,并将 On Error Resume Next 插入到每个例程中,但我不想将其注入到所有内容中(特别是因为其中一些工作簿可能已经修改了上述设置和在例行程序中重置它们!)
到目前为止,我最好的想法是编写某种进程观察器来查找标题为“Microsoft Visual Basic”的窗口并发送键为“E”(单击结束按钮)。
我在一些地方读到有一个名为 Application.BreakOnVBAError 的属性可以设置为 False,但它似乎不存在于互操作程序集中。
【问题讨论】:
-
VB.NET vbscript vba
-
@Plutonix 我在 VB.Net 中编写这个包装器,因此是 VB.Net 标记...这是一个 VB.Net 应用程序,它实例化 Excel 的 COM 对象,然后调用 VBA 宏.目的是在 VB.Net 应用程序中处理潜在的 VBA 错误情况。
标签: vb.net excel error-handling excel-interop vba