目的:带动画的PPT转化为PDF,PDF的每一页是动画的一个步骤
方法:使用 宏
参考链接:https://www.codercto.com/a/70548.html
具体方法(win、mac均可):
前提:需启用 宏 功能
步骤一
打开 工具-宏-Visual Basic 编辑器,点击 插入-模块,在窗口中粘贴如下代码
Option Explicit
Sub AddElements()
Dim shp As ShapeDim i As Integer, n As Integer
n = ActivePresentation.Slides.Count
For i = 1 To nDim s As SlideSet s = ActivePresentation.Slides(i)s.SlideShowTransition.Hidden = msoTrueDim max As Integer: max = AnimationElements(s)Dim k As Integer, s2 As SlideFor k = 1 To maxSet s2 = s.Duplicate(1)s2.Name = "AutoGenerated: " & s2.SlideIDs2.SlideShowTransition.Hidden = msoFalses2.MoveTo ActivePresentation.Slides.CountDim i2 As Integer, h As ShapeDim Del As New CollectionFor i2 = s2.Shapes.Count To 1 Step -1Set h = s2.Shapes(i2)If Not IsVisible(s2, h, k) Then Del.Add hNextDim j As IntegerFor j = s.TimeLine.MainSequence.Count To 1 Step -1s2.TimeLine.MainSequence.Item(1).DeleteNextFor j = Del.Count To 1 Step -1Del(j).DeleteDel.Remove jNextNext
Next
End Sub'is the shape on this slide visible at point this time step (1..n)
Function IsVisible(s As Slide, h As Shape, i As Integer) As Boolean'first search for a start state
Dim e As Effect
IsVisible = True
For Each e In s.TimeLine.MainSequenceIf e.Shape Is h ThenIsVisible = Not (e.Exit = msoFalse)Exit ForEnd If
Next'now run forward animating it
Dim n As Integer: n = 1
For Each e In s.TimeLine.MainSequenceIf e.Timing.TriggerType = msoAnimTriggerOnPageClick Then n = n + 1If n > i Then Exit ForIf e.Shape Is h Then IsVisible = (e.Exit = msoFalse)
Next
End Function'How many animation steps are there
'1 for a slide with no additional elements
Function AnimationElements(s As Slide) As Integer
AnimationElements = 1
Dim e As Effect
For Each e In s.TimeLine.MainSequenceIf e.Timing.TriggerType = msoAnimTriggerOnPageClick ThenAnimationElements = AnimationElements + 1End If
Next
End FunctionSub RemElements()
Dim i As Integer, n As Integer
Dim s As Slide
n = ActivePresentation.Slides.Count
For i = n To 1 Step -1Set s = ActivePresentation.Slides(i)If s.SlideShowTransition.Hidden = msoTrue Thens.SlideShowTransition.Hidden = msoFalseElseIf Left$(s.Name, 13) = "AutoGenerated" Thens.DeleteEnd If
Next
End Sub
- AddElements为展开ppt中的动画
- RemElemnts为删除展开的部分
步骤二
在 Powerpoint 的主窗口中选择“工具->宏->宏”,选择“AddElements”,然后点击“运行”即可。
步骤三
将修改后的PPT另存为PDF