我有一个 Excel 工作簿,它使用 RTD 服务器引入数据,我需要知道何时发生错误。
通常,当 Excel 出现一个对话框,显示“实时服务器‘RTDServer.Class’没有响应。您希望 Microsoft Excel 尝试重新启动服务器吗?”时,工作簿就会停止工作。 问题是对话框停止了一切 - 我想控制它,这样我就可以通过电子邮件提醒自己。
我编写了一些代码来尝试处理直接从 Excel 生成的错误。但是,我有点不确定这是否有效,因为大多数信息都是关于 VBA 代码的错误处理。
在这种情况下,我尝试选择正确的事件的第一件事是使用 SheetCalculate,但我认为我可以使用 SheetChange 或工作簿保存(因为它会自动保存)。 似乎没有对话框/错误? 基本上,出现错误时,它会向我自己发送一封电子邮件。 我不确定它是否会捕获这些事件/错误,因为它们相当罕见,可能每周发生一次。
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
On Error GoTo CleanFail'no error
CleanExit:'no errorExit Sub
CleanFail:
Error_Handler Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext
Resume CleanExit
End Sub
第二个过程基本上是调用来处理错误并发送电子邮件。
Sub Error_Handler(Error_Num As Variant, Error_Source As Variant, Error_Description As Variant, Error_HelpFile As Variant, Error_HelpContext As Variant)
Send Email_Alert
End Sub
感谢您的帮助
没有要捕获的事件,VBA
On Error
不能那样工作。您可以做的是为您的 RTD 调用编写一个包装器wrappers-to-simplify-use - MS Lean。但请注意,并非所有错误都会传回 VBA