Как отключить всплывающие окна при открытии файла с помощью Microsoft.Office.Interop - PullRequest
16 голосов
/ 07 апреля 2011

Например, подтверждение только для чтения, другие оповещения.Что делать с этими всплывающими окнами?Или игнорировать их?

Ответы [ 4 ]

30 голосов
/ 07 апреля 2011

См. Мой ответ здесь.

Обычно вы отключаете все оповещения с помощью метода «Отображать оповещения»:

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

, где [OFFICE_APP] - имяиспользуемой вами программы Office, например Word, Excel и т. д.

2 голосов
/ 13 июля 2017

Вот еще одна альтернатива для предотвращения сообщения безопасности, в котором предлагается разрешить макросы.

Я прочитал эту статью из MSDN и выяснил следующий код:

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

Поскольку копия файла создается перед ее открытием, мне не нужно возвращать AutomationSecurity обратно к настройке по умолчанию.

0 голосов
/ 31 октября 2018

Добавление примечания: для некоторых форматов файлов (я тестировал .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 выключен, и обязательно используйте правильную прописную букву.

0 голосов
/ 15 апреля 2017

Попробуйте:

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

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

Это отключит всплывающие окна.

...