VBA:在另一个工作簿中调用sub时使用“On Error”,

问题描述 投票:1回答:1

我正在构建一个能够在其他多个Excel工作簿中顺序启动和运行子例程的进程。这由“主”批处理启动器控制。

如果正在运行这些电子表格中的任何一个中存在任何错误,则启动程序需要退出该工作簿的运行并转到批处理中的下一个工作簿。此过程必须是连续的,无需用户输入,因此需要抑制任何错误对话框。

简化其核心本质,我的代码是这样的:

For I = 1 To NumberOfSubsToRun

    On Error GoTo ErrorHandler

    Application.Run (SpreadsheetName & "!SubName")

ErrorHandler:

Next I

有些工作簿正在倒塌(不是问题),但是他们正在创建一个错误对话框,使批处理停止。当它运行被调用的子程序时,该过程似乎忘记了启动程序中的On Error代码。

我不允许更改工作簿中的代码。如果他们摔倒了,他们就会倒下。不知何故,发射器需要自己解决这个问题。

有没有办法'提醒'关于On Error的被调用子程序?因此,如果任何工作簿子中存在错误,它将真正转移到下一个工作簿?

谢谢

excel vba onerror
1个回答
0
投票

不幸的是,没有简单的方法:更严格的“On Error”声明优先,而Run方法使用了一些非VBA代码,有效地阻止了错误传播。

但是一个解决方案是在VBScript中构建你的启动器。然后,您可以控制Excel的启动,将应用程序设置为不可见。这应该隐藏任何否则会出现的消息框。

然后还可以争辩说,经过一段时间后,特定工作簿的过程失败了,并据此处理。

通过足够的进程外控制,该解决方案将非常稳定。 (我的公司里有类似的东西。)

© www.soinside.com 2019 - 2024. All rights reserved.