20

如只读确认,其他警报。如何处理这些弹出窗口?还是忽略它们?

4

5 回答 5

32

在这里查看我的答案

基本上,您可以通过“显示警报”方法禁用所有警报:

Microsoft.Office.Interop.[OFFICE_APP].Application app = new Microsoft.Office.Interop.[OFFICE_APP].Application();
app.DisplayAlerts = false;

其中 [OFFICE_APP] 是您正在使用的 Office 程序的名称,例如 Word、Excel 等。

于 2011-04-07T13:28:08.090 回答
6

这是防止安全消息要求您允许宏的另一种选择。

我从 MSDN 阅读了这篇文章并想出了以下代码:

Application wordApp = new Application()
{
    Visible = false,
    AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable
};

由于文件的副本是在打开之前制作的,因此我不必将 AutomationSecurity 更改回默认设置。

于 2017-07-13T15:09:36.147 回答
2

亲爱的“ Uriel Fernandez ”和他的想法 https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel._application.automationsecurity?view=excel-pia

将我引向另一个想法https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel._application.screenupdating?view=excel-pia#Microsoft_Office_Interop_Excel__Application_ScreenUpdating

所以可以尝试禁用它_Application.ScreenUpdating和......“你将无法看到代码在做什么,但它会运行得更快”

编辑

Word.Application app = null;
try
{
app = new Word.Application();
app.Visible = false;
app.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone;
app.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable;
app.ScreenUpdating = false;
// work ...
}
catch {}
app.Quit();
if (app != null) Marshal.ReleaseComObject(app);
于 2020-07-29T01:25:21.173 回答
2

添加注释:对于某些受密码保护的文件格式(我测试过 .XLS,但可能还有其他),app.DisplayAlerts = false不会绕过密码对话框。

在这种情况下,您可以简单地在打开时传递一个假密码,这将引发错误。如果你想抓住它。

var app = new Application();
app.DisplayAlerts = false;
var workbook = app.Workbooks.Open(filePath, "fakePassword"); // Bypasses dialog, throws error

在这种情况下,抛出的错误是:

System.Runtime.InteropServices.COMException:您提供的密码不正确。验证 CAPS LOCK 键是否已关闭并确保使用正确的大小写。

于 2018-10-31T00:28:09.053 回答
-1

尝试这个:

Microsoft.Office.Interop.Word.Application appWord = new 
Microsoft.Office.Interop.Word.Application();

appWord.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone;

这将禁用弹出窗口。

于 2017-04-15T06:59:22.623 回答