Отключить собственную надстройку Word 2007, если документ не загружен - PullRequest
0 голосов
/ 12 апреля 2011

Я разработал надстройку уровня приложения для Word 2007 с использованием Visual Studio 2010 и .NET 3.5.Часть того, что он делает, это использует

Globals.ThisAddIn.Application.Selection.Range

для вставки текста.

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

Когда Word 2007 открыт, но документ не загружен, большинство кнопок наленты отключены (то есть серые).

Есть идеи, как этого добиться?Будут ли надстройки подключаться к событию и соответственно отключать их кнопки?Если это так, будет ли это событие

DocumentBeforeClose

, и может ли это быть рискованным, если Word каким-то образом будет открыт без документа?(То есть документ не загружен, но событие еще не было инициировано.)

Заранее спасибо!

ОБНОВЛЕНИЕ: ОК, похоже, что используется

getEnabled="MyMethod"

атрибут XML может быть способом продвижения вперед, но, похоже, это работает только для отдельных элементов управления на ленте, а не для всей ленты.

Ответы [ 2 ]

0 голосов
/ 11 июля 2011

Попробуйте вместо этого использовать событие DocumentChange (см. Мой ответ по этой теме ).

0 голосов
/ 13 апреля 2011

Вы в основном ответили на свой вопрос.

Я мог бы поймать исключение или программно определить, был ли документ открыт в данный момент

Поймать исключение немного неприятноно будет работать.

Программным способом определить, загружен ли документ, является лучшая альтернатива.

И это просто.

  If Globals.ThisAddIn.Application.Documents.Count > 0 then
        'at least one document is opened
  end if

Не может быть намного проще, чем это.

Есть ли что-то еще, чего вы пытались достичь с помощью материала о кнопках на ленте?

...