Как остановить запуск макросов при открытии документа Word с помощью OLE Interop? - PullRequest
4 голосов
/ 03 июня 2011

Как следует из названия, у меня есть приложение .Net, которое использует взаимодействие для открытия документов в Word. Я установил

app.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable

перед открытием документа. Согласно документации, это «Отключает все макросы во всех файлах, открытых программно, без каких-либо предупреждений безопасности»

Однако, когда я пытаюсь открыть один конкретный документ, на экране появляется диалоговое окно с надписью «не удалось загрузить объект, поскольку он недоступен на этом компьютере». Это документ клиента, но я считаю, что он содержит макрос со ссылками на COM-объект, который я не установил.

Я что-то делаю глупо? Есть ли способ на самом деле отключить макросы при открытии документа Word?

1 Ответ

3 голосов
/ 07 июня 2011

Попробуйте:

WordBasic.DisableAutoMacros 1

Как ни странно, это основано на возврате к дням, предшествующим VBA, но, тем не менее, представляется наиболее надежным способом предотвращения запуска автоматических макросов (в любом документе - вы можете захотеть включить вернемся, используя параметр "0").

Недавно у меня был проект, в котором мне пришлось обрабатывать 6000 шаблонов Word (да, шаблонов, а не документов), многие из которых содержали странные вещи, такие как макросы и т. Д. Я смог обработать все, кроме 6, с помощью этой техники. (Я так и не понял, в чем проблема с этими 6).


РЕДАКТИРОВАТЬ: для обсуждения, как вызвать это из C #, см .: http://www.dotnet247.com/247reference/msgs/56/281785.aspx

...