如何使用VBA在Word启动时设置视图 我想在启动时设置“空白代码”ActudioCopyActudioCopy.ActhViek.ActEPPENE.View < /Cord>属性,以显示空白文档MSWord。在Application.Initialise事件中,没有活动文档,并且不会发生document\u New事件。是否有人知道如何处理第一个文档或以其他方式保留它?
您可以使用DocumentChange事件获取它。在初始化事件处理程序之前,您需要设置一个标志来指示您正在启动,以便它只响应一次如何使用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)
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中都会触发该事件,在这两种情况下都是从启动模板运行代码。如果您已经熟悉我编辑的答案中的信息,请道歉。轮到我道歉了。是我的测试方法产生了错误的结果。这次活动确实如期举行。我的错。我很抱歉,但感谢你的坚持。