如何在使用Microsoft.Office.Interop打开文件时禁用弹出窗口

本文关键字:文件 窗口 Interop Microsoft Office | 更新日期: 2023-09-27 17:49:22

如只读确认,其他提示。如何处理这些弹出窗口?还是无视他们?

如何在使用Microsoft.Office.Interop打开文件时禁用弹出窗口

请看我的回答。

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

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

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

这里有另一种方法可以防止安全消息要求您允许宏。

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

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

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

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

在这种情况下,您可以简单地在open传递一个假密码,这会抛出一个错误。想接就接。

var app = new Application();
app.DisplayAlerts = false;
var workbook = app.Workbooks.Open(filePath, "fakePassword"); // Bypasses dialog, throws error
在这种情况下,抛出的错误是:

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

亲爱的"乌里尔·费尔南德斯"他的思想https://learn.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel._application.automationsecurity?view=excel-pia

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

所以可以尝试禁用它_Application。ScreenUpdating and…您将无法看到代码在做什么,但它会运行得更快"

编辑

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);

试试这个:

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