Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用VBA在Word启动时设置视图 我想在启动时设置“空白代码”ActudioCopyActudioCopy.ActhViek.ActEPPENE.View < /Cord>属性,以显示空白文档MSWord。在Application.Initialise事件中,没有活动文档,并且不会发生document\u New事件。是否有人知道如何处理第一个文档或以其他方式保留它?_Vba_Ms Word - Fatal编程技术网

如何使用VBA在Word启动时设置视图 我想在启动时设置“空白代码”ActudioCopyActudioCopy.ActhViek.ActEPPENE.View < /Cord>属性,以显示空白文档MSWord。在Application.Initialise事件中,没有活动文档,并且不会发生document\u New事件。是否有人知道如何处理第一个文档或以其他方式保留它?

如何使用VBA在Word启动时设置视图 我想在启动时设置“空白代码”ActudioCopyActudioCopy.ActhViek.ActEPPENE.View < /Cord>属性,以显示空白文档MSWord。在Application.Initialise事件中,没有活动文档,并且不会发生document\u New事件。是否有人知道如何处理第一个文档或以其他方式保留它?,vba,ms-word,Vba,Ms Word,您可以使用DocumentChange事件获取它。在初始化事件处理程序之前,您需要设置一个标志来指示您正在启动,以便它只响应一次 Private Sub AppWord_DocumentChange() If Documents.Count > 0 Then If InStartup Then InStartup = False If Left(ActiveDocument.AttachedTemplate, 10)

您可以使用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。因此,它包含的任何代码只有在创建该文档后才被加载,也就是在触发事件之后。这使得Normal.dotm对于事件处理程序来说是一个非常糟糕的主机。就我个人而言,我避免使用Normal.dotm进行任何事情,而不是为问题的答案绘制代码

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


这是我实施的解决方案

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

该事件也不会在启动时发生。但是,它发生在退出时。因此,我可以在当时设置视图,Word将记住该设置以备下次使用。:-)这很奇怪,因为在Word 2010和Word 2016中都会触发该事件,在这两种情况下都是从启动模板运行代码。如果您已经熟悉我编辑的答案中的信息,请道歉。轮到我道歉了。是我的测试方法产生了错误的结果。这次活动确实如期举行。我的错。我很抱歉,但感谢你的坚持。