gpt4 book ai didi

c# - 终端 Debug模式下 VBA 编辑器的屏幕截图,或使用 Excel DOM 在 VBA 编辑器中查找错误行和描述符?

转载 作者:行者123 更新时间:2023-11-30 22:24:12 25 4
gpt4 key购买 nike

Excel 工作簿由命令行调用,命令行本身是从 c# (3.5) 启动的。工作簿运行,但 VBA 中出现错误。例如,数据透视表中缺少一列,Excel 会提示用户一条错误消息,并提供“调试”选项。

从C#中的流程,我们可以检测到错误窗口是打开的,我们对错误信息进行截图,然后我们关闭错误框。

如果这是一个交互式 session ,Excel 将在 Debug模式下显示 VBA 编辑器,并突出显示发生错误的行。

但是,由于这是在无人值守的终端 session 中运行,因此我们无法截取 VBA 编辑器的屏幕截图(屏幕截图为黑屏)。

然后我们可以使用 Windows PID 关闭 excel 程序。

问题是:我们如何获取 VBA 编辑器的屏幕截图,或者我们如何在 Debug模式下与 Excel 绑定(bind)(使用 COM 或互操作),并遍历 dom 以查找错误行,以及可能的错误消息?

最佳答案

(1) 如果您拥有 Excel 工作簿的创作控制权,则可以插入行号和错误处理程序以写入文件 Err.Number、Err.Description、Err.Source、Erl。

(2) 如果 (1) 不是一个选项,但您可以在主机上设置宏安全性以允许对 Visual Basic 项目进行编程控制,那么您可以获得事件行号:

Dim xl As excel.Application
Dim StartLine As Long, StartColumn As Long, EndLine As Long, EndColumn As Long
Set xl = GetObject(, "Excel.Application")
xl.VBE.ActiveCodePane.GetSelection StartLine, StartColumn, EndLine, EndColumn
Debug.Print StartLine, StartColumn, EndLine, EndColumn

(3) 如果(1)和(2)都不是选项,就有点毛了,不过可以copy出窗口的位图内容:http://msdn.microsoft.com/en-us/library/windows/desktop/dd183402%28v=vs.85%29.aspx

关于c# - 终端 Debug模式下 VBA 编辑器的屏幕截图,或使用 Excel DOM 在 VBA 编辑器中查找错误行和描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12901309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com