Может ли предупреждение о макросах Visio подавляться при автоматизации в коде?

StackOverflow https://stackoverflow.com/questions/1040843

  •  22-07-2019
  •  | 
  •  

Вопрос

Я автоматизирую Visio 2003 из приложения VB.NET. Мой код выглядит следующим образом (с удалением неинтересного материала):

Dim objApp As New Microsoft.Office.Interop.Visio.InvisibleApp
objApp.Settings.ShowFileOpenWarnings = False
Dim objDoc As Microsoft.Office.Interop.Visio.Document
objDoc = objApp.Documents.Open(VisioFilename)

Я обнаружил, что последняя строка заставляет Visio вызывать скрытый MessageBox с надписью:

Макросы в этом документе отключены, так как уровень безопасности высок, а макросы не имеют цифровой подписи и не проверены как безопасные. Для запуска макросов их можно подписать или изменить уровень безопасности.

Поскольку это будет работать на компьютерах, я не управляю файлами, я не контролирую, ни один из этих вариантов не работает для меня. Мне действительно все равно, что макросы отключены, я просто использую Visio для преобразования файла из его собственного формата в SVG. Я, конечно, не хочу предлагать пользователям, чтобы они понизили уровень безопасности, и я не хотел бы снижать его для них.

Как видно из приведенного выше кода, я отключаю предупреждения об открытии файлов, но, похоже, они не включают предупреждение о макросах. Поскольку я использую Visio.InvisibleApp, оказывается, что предупреждение не отображается для пользователя. Запуск видимого экземпляра Visio не поможет, потому что я создаю пакетный конвертер, даже если сообщение было видимым, это означает, что пользователю придется нажимать кнопку ОК для каждого файла. Это сделало бы функцию пакетного преобразования практически бесполезной.

Я вижу, что класс Visio имеет свойство VBAEnabled, но оно доступно только для чтения. Если бы я мог просто отключить VBA при открытии файла, это, вероятно, решило бы проблему. Я просмотрел все свойства и свойство «Настройки» в классе и ничего не смог найти. Я провел много поисков в Google и не могу найти ничего, что решило бы эту проблему.

Кто-нибудь знает, можно ли подавить это предупреждение при использовании автоматизации с Visio? Могу ли я сделать это, если я переключусь на Visio 2007?

Это было полезно?

Решение

Существует метод OpenEx, который работает так же, как Open, но принимает флаги. Одним из таких флагов является visOpenMacrosDisabled (& H80).

Есть также несколько других удобных флагов, таких как visOpenDontList (& amp; H8), поэтому файлы, открытые с помощью автоматизации, не будут добавлены в список последних файлов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top