Excel 工作簿由命令行调用,命令行本身是从 c# (3.5) 启动的。工作簿运行,但 VBA 中存在错误。例如,数据透视表中缺少一列,Excel 会向用户提示错误消息,并带有“调试”选项。
从C#中的流程我们可以检测到错误窗口是打开的,我们对错误信息进行截图,然后我们关闭错误框。
如果这是一个交互式会话,Excel 将在调试模式下显示 VBA 编辑器,并突出显示发生错误的行。
但是,因为这是在无人看管的终端会话中运行的,所以我们无法截取 VBA 编辑器的屏幕截图(屏幕截图是黑屏)。
然后,我们可以使用 windows PID 关闭 excel 程序。
问题是:我们如何获得 VBA 编辑器的屏幕截图,或者我们如何在调试模式下与 Excel 绑定(使用 COM 或互操作),并遍历 dom 以找到错误行,以及可能的错误消息?