Могу ли я определить, был ли документ Office открыт с помощью внешнего кода автоматизации? - PullRequest
1 голос
/ 20 мая 2011

У меня есть некоторый код в надстройке Office VSTO (реализован для Word, Excel 2003 и 2007 в VB.NET), который вызывает проблемы для некоторого внешнего кода автоматизации.

Есть ли способ определить, был ли документ Office открыт с помощью кода автоматизации по сравнению с пользователем? Некоторое различие в объектах Application или Document, или событие, которое я могу обработать, которое срабатывает только в том или ином случае?

Ответы [ 2 ]

0 голосов
/ 23 мая 2011

Хорошо, поэтому, когда приложение Office открывается через объектную модель Office, в командной строке используется переключатель /automation (например, Winword.exe /automation).

Так что я просто проверяю это впри запуске моего надстройки и установке глобального логического значения:

If (Environment.CommandLine.IndexOf("/automation", StringComparison.OrdinalIgnoreCase) >= 0) Then mbOpenedByAutomation = True

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

0 голосов
/ 20 мая 2011

Ну, вообще говоря, автоматизация откроет документы НЕ ВИДИМЫ, поэтому вы должны иметь возможность проверить видимость документа во время события documentOpen.Возможно, он не идеален, но, насколько мне известно, у пользователя нет возможности невидимо открыть документ вручную, поэтому он должен работать.

OTOH, некоторая автоматизация преднамеренно открывает документы визуально (чтобы пользователь моготредактируйте их), чтобы это не было 100% решением.

...