Word 2013分屏问题
本文关键字:问题 分屏 2013 Word | 更新日期: 2023-09-27 18:10:19
在office 2010中,如果你记录一个宏来分割屏幕,你会得到
ActiveWindow.SplitVertical = 50
但是如果我在Office 2013中做同样的操作,我得到
ActiveWindow.Panes(3).Activate
ActiveWindow.SplitVertical = 50
我不明白的是3号窗格。这怎么可能是当我似乎只有2个窗格(屏幕已分裂后)?此外,我删除分割,然后再次运行宏,它摔倒了,这并不奇怪,因为它试图激活一个窗格,不存在之前,它已经分割屏幕。所以宏的记录没有给出它应该得到的。
这对我来说很重要,因为我有一个c# vsto项目,拆分屏幕并在顶部窗格中选择特定的文本,并在底部窗格中选择其他内容。在Office 2010中,只要根据需要激活pane1或pane2,这就可以完美地工作,但在Office 2013中就不行。我找到了一个工作,如果我激活pane3而不是pane2,当我想要底部窗格,它做我想要的,但这感觉不可靠,因为我不明白窗格2是什么。谁能解释一下发生了什么,并建议一种可靠的方式来激活我感兴趣的窗格?
在Word 2013中,窗格集合在其成员中包含了部分(但不是全部)Word的任务窗格。例如,导航窗格可以显示三种类型的信息:标题、页面和结果。当设置为"标题"时,此窗格不计算在窗格集合中。当设置为Pages时,它被计算在窗格集合内。
使问题更加复杂的是,作为窗格集合成员的激活窗格有时在整个Word会话期间在集合中保留其索引。因此,如果将导航窗格设置为Pages,并在文档上使用,然后关闭该文档,那么随后打开的第二个文档拆分其窗口,其窗格集合索引仍然会受到对第一个文档使用导航窗格的影响。我能够以这种方式复制Panes(3)
,以及在屏幕上显示导航窗格(设置为Pages)。
我还能够创建一个Panes(4)
索引,并怀疑更高的索引数是可能的,因为任务窗格(脚注,同义词典,拼写&;语法等)
但是,可以使用代码激活所需的文档窗格。窗格集合Next
属性将在文档窗格之间导航。此外,当活动窗口被分割时,底部窗格将成为活动窗格。这个信息允许下面的VBA代码(可以改编为c#的VSTO插件)工作:
Sub SelectCorrectPane()
Dim DocPaneTop As Integer
Dim DocPaneBottom As Integer
Dim PaneCount As Integer
PaneCount = ActiveDocument.ActiveWindow.Panes.Count
'The Next property switches between document panes but
'if the user is clicked into a task pane when the code executes Next
'cycles through the task panes until it gets to the document pane
For i = 1 To PaneCount
ActiveDocument.ActiveWindow.ActivePane.Next.Activate
Next
ActiveWindow.SplitVertical = 50 'This activates bottom pane
DocPaneBottom = ActiveDocument.ActiveWindow.ActivePane.Index
ActiveDocument.ActiveWindow.ActivePane.Next.Activate 'this activates the top pane
DocPaneTop = ActiveDocument.ActiveWindow.ActivePane.Index
ActiveDocument.ActiveWindow.Panes(DocPaneTop).Activate
'Select text in top pane per OP
ActiveDocument.ActiveWindow.Panes(DocPaneBottom).Activate
'perform other actions in bottom pane per OP
End Sub
最后注意:由于某些未知的原因,当使用
缩短时,上面的代码将无法在我的PC上工作。 With ActiveDocument.ActiveWindow
'code here
End With