我正在尝试创建一个将在PowerPoint演示文稿中的幻灯片中运行的宏。我已经开始工作了,但是现在它已经停止工作了,我不知道为什么。
在幻灯片和动画中运行的vbscript是
Private Sub PPTEvent_SlideShowNextBuild(ByVal Wn As SlideShowWindow)
Sleep 1000
SendKeys "{RIGHT}"
End Sub
Private Sub PPTEvent_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
Sleep 1000
SendKeys "{RIGHT}"
End Sub
有没有更好的方法可以做到这一点?我看不出问题出在哪里,我也尝试过删除Sleep 1000,但是没有骰子。
奇怪的是,如果我同时使用
SendKeys "{ENTER}"
SendKeys "{RIGHT}"
就像我希望的那样,它贯穿了整个幻灯片放映。
这是基于SlideShowSettings帮助的另一种方法
我在下面已更正的MSDN页面中有一个错误(对于LoopUntilStopped,需要使用msoTrue / False而不是True / False)。
当您进入“幻灯片放映”模式并且动画运行正常时,它将自动启动。
在标准模块中...
Public showRunning As Boolean
Sub runSlides()
showRunning = True
For Each s In ActivePresentation.Slides
With s.SlideShowTransition
.AdvanceOnTime = msoTrue
.AdvanceTime = 1
End With
Next
With ActivePresentation.SlideShowSettings
.RangeType = ppShowAll
.AdvanceMode = ppSlideShowUseSlideTimings
.LoopUntilStopped = msoFalse
.ShowWithAnimation = msoTrue
.Run
End With
End Sub
Public Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow)
If Not showRunning Then
runSlides
End If
End Sub
Public Sub OnSlideShowTerminate(ByVal Wn As SlideShowWindow)
showRunning = False
closeSlideShow
End Sub
Public Sub closeSlideShow()
Dim s As Slide
For Each s In ActivePresentation.Slides
With s.SlideShowTransition
.AdvanceOnTime = msoFalse
End With
Next
On Error Resume Next
ActivePresentation.SlideShowWindow.View.Exit
On Error GoTo 0
End Sub
编辑:
添加了closeSlideShow例程以停止每次播放幻灯片。
注意:通过编程方式或手动取消选中“幻灯片放映”功能区选项卡中的“使用时间”,将.AdvanceOnTime设置为msoFalse将会停止幻灯片放映。似乎将其设置为msoTrue,并将其输入设置为msoFalse,然后尝试在同一例程中执行ActivePresentation.SlideShowSettings.Run将不起作用!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句