我正在构建一个能够按顺序启动和运行其他多个Excel工作簿中的子例程的过程。这由“主”批处理启动器控制。
如果正在运行的任何电子表格中都存在任何错误,则启动程序需要退出那个工作簿的运行,并移至该批处理中的下一个工作簿。 此过程必须是连续的,无需用户输入,因此任何错误对话框都必须取消。
我的代码简化为其核心本质:
For I = 1 To NumberOfSubsToRun
On Error GoTo ErrorHandler
Application.Run (SpreadsheetName & "!SubName")
ErrorHandler:
Next I
有些工作簿掉下来了(不是问题),但是它们创建了一个错误对话框,使批处理停止了。当启动程序运行被调用的子例程时,该过程似乎忘记了所有关于启动器中的错误代码。
我不允许更改工作簿中的代码。如果他们跌倒了,他们就会跌倒。无论如何,发射器需要自行解决此问题。
是否可以“提醒”有关“发生错误”的子例程?因此,如果任何工作簿子项中都存在错误,那么它真的会转移到下一个工作簿吗?
谢谢
答案 0 :(得分:0)
不幸的是,没有简单的方法可以解决:范围更小的“错误时”声明优先,并且Run
方法在幕后使用一些非VBA代码来有效地阻止错误传播。
但是一种解决方案是在VBScript中构建启动器。然后,您可以控制Excel的启动,将应用程序设置为不可见。那应该隐藏任何原本会出现的消息框。
然后还可以争辩说,经过一定时间后,特定工作簿的过程失败,并相应地进行处理。
有了足够的过程外控制,此解决方案将非常稳定。 (我的公司里有类似的东西。)