我有一个由子文档组成的word文档(第2013条)。
要制作最终文档,我必须:
- 视图 - >概要
然后,单击“展开子文档”并通过“关闭大纲视图”按钮关闭大纲视图。
我正在尝试编写一个自动执行此操作的宏(首先使用宏录制器来查找正确的命令)。 但我没有相应的“关闭大纲视图”。
ActiveWindow.ActivePane.View.Type = wdOutlineView
ActiveDocument.Subdocuments.Expanded = True
然后我添加了以下语句,希望它将关闭大纲视图,但不是:
ActiveWindow.ActivePane.View.Type = wdNormalView
使用bmgh1985提供的提示,我修改了最后一条语句:
ActiveWindow.ActivePane.View.Type = 3
但Word挂起:Subdocument
的扩展是一个异步处理(由Expanded属性的修改触发),当视图恢复为正常时,word正在扩展Subdocument
。
有没有办法等待Subdocument
扩展的结束? (我试过用一个计时器和一个大循环,但没办法....)
答案 0 :(得分:2)
尝试更换
ActiveDocument.Subdocuments.Expanded = True
用
Do While ActiveDocument.Subdocuments.Expanded = False
ActiveDocument.Subdocuments.Expanded = True
Loop
然后将脚本保留在该品脱,直到Expanded = True
然后回到普通文档查看使用:
ActiveWindow.ActivePane.View.Type = wdPrintView
而不是
ActiveWindow.ActivePane.View.Type = 3
编辑:
所以,我发现运行原始脚本,需要一段时间才能赶上文档中的页面数量,在我的测试用例中,它扩展了10个子文档,每个24页,每个文档都有文字,表格和图片。
我在扩展子文档后添加了一个循环,似乎已经整理了延迟的页码更新。
使用宏录制器我还找到了另一种切换扩展子文档的方法,而无需通过OutLine View。
Sub Macro2()
'Toggles the Expanded without going view the Outline View
ActiveDocument.Subdocuments.Expanded = Not ActiveDocument.Subdocuments.Expanded
i = 1
Do Until i = TotPages
'Setting i to Total Number of Pages
i = Selection.Information(wdNumberOfPagesInDocument)
'Setting TotPages to Total Number of Pages
TotPages = Selection.Information(wdNumberOfPagesInDocument)
Loop
End Sub
答案 1 :(得分:0)
感谢所有人对这个主题的想法。但是,它并没有扩展导致问题的子文档。它正在改变异步发生的视图,除非你等待它完成(DoEvents),否则子文档扩展不起作用。以下代码适用于Word 2010。
Sub SetupMasterForEditing()
'
' The document comes up in a default mode with subdocuments locked. Change it back.
'
ChangeView (wdOutlineView)
ActiveDocument.Subdocuments.Expanded = True
ChangeView (wdPrintView)
End Sub
Sub ChangeView(View As Integer)
' Change to view View - see https://msdn.microsoft.com/en-us/library/office/ff836365.aspx for values
ActiveWindow.ActivePane.View.Type = View
DoEvents
End Sub
答案 2 :(得分:0)
我正在努力完成同样的事情,以下工作对我来说(Office 2007):
Sub ExpandAll()
ActiveDocument.ActiveWindow.View.Type = wdMasterView
If ActiveDocument.Subdocuments.Count >= 1 Then
ActiveDocument.Subdocuments.Expanded = True
End If
' Unlink
ActiveDocument.Subdocuments(1).Delete
End Sub
很奇怪。我最初尝试过wdOutlineView,但我一直在收到错误。当我切换到wdMasterView它突然工作并转到大纲视图。我不明白为什么。
最后一行取消链接子文档与主文档。奇怪的是,我不知道它为什么会起作用。我原本打算遍历子文档集合来删除每一个,但由于某种原因,只是删除第一个已经取消所有链接。