当前位置:  开发笔记 > 编程语言 > 正文

通过OLE实现Excel自动化 - 抑制/捕获对话框错误?

如何解决《通过OLE实现Excel自动化-抑制/捕获对话框错误?》经验,为你挑选了1个好方法。

我通过C#程序和OLE刷新Excel 2007数据连接.大部分工作都是由一个Workbooks.RefreshAll()语句完成的.

正如刷新电子表格的本质一样,各种各样的事情都可能出错.在刷新过程中,程序可以提供有关"无法从文件中读取数据'|'的对话框错误消息,以及有关"重叠数据透视表报告"的消息.这两个都是致命的,我应该能够捕获这些错误,并退出程序时出错.

不幸的是,我似乎无法捕捉到这些问题,相反,我的自动程序一直存在,直到我出现并按下对话框上的输入.

有没有人知道是否可以以编程方式捕获excel对话框中显示的错误,而不是将它们显示给用户?



1> Mike Rosenbl..:

最好的办法是将Application.DisplayAlerts属性设置为False.也就是说,假设您的Excel.Application对象变量名为"xlApp",您只需执行以下操作:

xlApp.DisplayAlerts = false;

请注意,这将导致为每个对话框采取默认响应,这通常是您想要的.(没有好办法解决这个问题.离开DisplayAlerts = True并使用SendKeys可能是你唯一的另一种选择,但会很丑陋并且非常容易出错.)

由于您是通过OLE自动化进行此调用,因此此调用是跨进程的,因此,DisplayAlerts设置将一直存在,直到您更改它为止.(如果在进程中调用,通过VBA,它会在例程完成时自动切换回true.相同的行为可能适用于通过CommandBar或Ribbon控件调用的VB.NET或C#加载项,但需要一个测试以确定.)

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有