Я бы начал с DocumentOpen и NewDocument. Дополнительный уровень сложности существует, если вам необходимо поддерживать документы ProtectedView; Слово запускает другое событие. Я обнаружил, что если я попытаюсь проверить это событие (и это не происходит), он вызывает ошибку. Мне не повезло, и в конечном итоге это не стоило того времени, когда я тратил. Я привел пример ниже некоторого кода, который открывает панель стилей при открытии документа или создании нового (при условии, что надстройка загружается) и расширяет маркер стиля в черновом представлении, если он еще не расширен.
В моем модуле UI:
Dim X As New clsAppEvent 'This is in the declarations
Public Sub OnRibbonLoad(objRibbon As IRibbonUI)
Do While Documents.Count = 0
DoEvents
Loop ' I find this useful as sometimes it seems my ribbon loads before the document.
Call Register_Event_Handler
' Other stuff
End Sub
Private Sub Register_Event_Handler()
Set X.App = Word.Application
End Sub
Затем в модуле класса я называю clsAppEvent:
Option Explicit
Public WithEvents App As Word.Application
Private Sub App_DocumentOpen(ByVal Doc As Document)
App.TaskPanes(wdTaskPaneFormatting).visible = True
End Sub
Private Sub App_NewDocument(ByVal Doc As Document)
App.TaskPanes(wdTaskPaneFormatting).visible = True
End Sub
Private Sub App_WindowActivate(ByVal Doc As Document, ByVal Wn As Window)
If Wn.StyleAreaWidth <= 0 Then
Wn.StyleAreaWidth = 60
End If
End Sub
Кроме предостережений я отметил выше, одна проблема, у меня было если пользователь имеет автокоды в своем обычном шаблоне. Это произошло только однажды, поэтому я не исследовал его.
Я хотел бы найти место, где я узнал об этом (и из которого Register_Event_Handler была получена Если я найду его, я добавлю комментарий
См [здесь] (HTTP:.. // Слово. mvps.org/faqs/macrosvba/documentevents.htm) - ваш вопрос не говорит, когда/как вы пытаетесь эти события, но кажется, что они не могут быть сохранены в Addin. – enderland
Вы можете сделать это с помощью обработчиков событий. пример в Excel: http://msdn.microsoft.com/en-us/library/office/hh211482(v=office.14).aspx. Остерегайтесь, однако, Word не очень хорош при последовательном запуске событий. Если вы удвоите -click файл, а не открывать его из Word, например, некоторые события приложения не срабатывают. Для моих целей это нормально (действия, которые я хочу вызвать, не являются существенными), но если вам нужна гарантия что события будут срабатывать, это может вам не помочь. Вот список событий приложения: http://msdn.microsoft.com/en-us/library/office/ff841714(v=office.14).aspx – Christina
Спасибо за комментарии. Так вы можете помочь мне, с каким событием будет срабатывать при запуске Word, что позволит мне изменить свойство ActiveWindow? – Mark