我将从 DocumentOpen 和 NewDocument 开始。如果您需要支持 ProtectedView 文档,则存在额外的复杂性;Word 触发了不同的事件。我发现如果我尝试检查该事件(并且它没有发生),它会引发错误。我没有太多的运气,最终我花费的时间是不值得的。我在下面发布了一些代码示例,这些代码在打开文档或创建新文档(假设加载项正在加载)时打开样式窗格,并在草稿视图中展开样式边距(如果尚未展开)。
在我的 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
除了我上面提到的警告之外,我遇到的一个问题是,如果用户的 Normal 模板中也有 Auto 代码。这只出现过一次,所以我没有调查它。
我希望我能找到我了解这一点的网站(以及从中派生 Register_Event_Handler 的网站。如果我找到它,我会添加评论。