与我合作的一位用户不小心在幻灯片母版视图中制作了整个演示文稿。也就是说,他们没有添加幻灯片,而是创建了布局。
有一个简单的部分解决方案,即仅使用每个布局添加新幻灯片。这样可以正常显示演示文稿,但有一定的局限性。具体来说,我们在这里进行了很多协作,当与其他用户共享此文件时,其他人将无法编辑幻灯片中的文本,除非他们自己进入主视图。
整个东西可以从头开始重建,但它非常大,所以这会耗费太多时间。
答案1
一种(可能有缺陷的)方法:
转到主视图中的每个布局
按 Ctrl+A 全选
按 Ctrl+C 复制
返回普通视图
根据空白布局添加新幻灯片
按 Ctrl+V 粘贴刚从布局复制的内容
完成所有布局后,返回主视图,选择并删除每个布局中的内容。
缺陷是什么?这将导致一堆幻灯片不再与控制演示文稿外观的布局相关联。要进行任何大范围更改,您需要更改每张幻灯片。但这是一个相对快速的修复方法,至少可以让您获得可编辑的幻灯片。
如果演示文稿将在多个场合使用并由不同的人进行编辑,那么更完整的修复可能更合适,尽管这会耗费更多的时间。
这将涉及执行上述操作,然后检查布局并删除任何不是 a) 占位符或 b) 根据布局在每张幻灯片上都需要的内容。
然后,您需要将适当的布局应用于最初基于它的每张幻灯片,最后,如果需要,将随机文本框中的文本复制到适当的占位符中。
如果您决定采用这种方式,这里有一个宏,它将从演示文稿中的每个主控/布局中删除所有非占位符形状。它不会为您完成整个工作,但至少可以自动完成其中相当繁琐的部分:
Sub DeleteNonPlaceholderShapes()
' Deletes non-placeholder shapes from
' each slide master and layout in a presentation
' Run this on a COPY of your presentation, never the only original.
Dim oDes As Design
Dim oLay As CustomLayout
Dim oSh As Shape
With ActivePresentation
For Each oDes In .Designs
Call HandleOneContainerObject(oDes.SlideMaster)
For Each oLay In oDes.SlideMaster.CustomLayouts
Call HandleOneContainerObject(oLay)
Next
Next
End With
End Sub
Sub HandleOneContainerObject(oObject As Object)
Dim x As Long
For x = oObject.Shapes.Count To 1 Step -1
If Not oObject.Shapes(x).Type = 14 Then
oObject.Shapes(x).Delete
End If
Next
End Sub