如何使用VBA设置Word启动时的视图

时间:2017-05-26 03:15:21

标签: word-vba

我想为MS Word在启动时显示的空白文档设置ActiveDocument.ActiveWindow.ActivePane.View属性。在Application.Initialise事件中没有活动文档,并且不会发生Document_New事件。有谁知道如何处理第一份文件或以其他方式保留它?

2 个答案:

答案 0 :(得分:0)

您可以使用DocumentChange事件获取它。在初始化事件处理程序之前,您需要设置一个标志来指示您处于启动状态,以便它只响应一次。

Private Sub AppWord_DocumentChange()
    If Documents.Count > 0 Then
        If InStartup Then
            InStartup = False
            If Left(ActiveDocument.AttachedTemplate, 10) = "Normal.dot" Then
                ActiveDocument.ActiveWindow.ActivePane.View = wdNormalView
            End If
        End If
    End If
End Sub

修改

我的猜测是您已将代码添加到Normal.dotm中。如果是这种情况,它将解释为什么你不能在启动时捕获事件。

Word创建的默认空白文档基于Normal.dotm。因此,它所包含的任何代码只会在创建该文档后加载,事件触发后的ergo。这使得Normal.dotm成为事件处理程序的非常差的主机。就个人而言,除了草拟代码以获得问题的答案之外,我还避免使用Normal.dotm!

Word中代码的一个更好的主页是它相当于可以为Excel和PowerPoint创建的加载项,这是一个在启动时加载的模板。它位于Word中定义的文件夹中作为“启动”文件夹(“文件”|“选项”|“高级”|“常规”|“文件位置”)。默认情况下,它是Windows的%APPDATA%\ Microsoft \ Word \ STARTUP。将包含代码的模板放在该文件夹中,然后在> 之前加载空白文档,并使您能够响应事件。

enter image description here

答案 1 :(得分:0)

这是我实施的解决方案。

Private Sub App_DocumentChange()
    ' 27 May 2017

    Static Done As Boolean

    If Not Done Then
        On Error Resume Next
        If ActiveDocument.Path = "" Then SetView ActiveDocument
        Done = True
    End If
End Sub