我最近启动了VBA,正在尝试创建一个项目,该项目将打开PowerPoint文件(compute_dashboard.pptx)并将其放在幻灯片视图中。它将遍历幻灯片并循环播放,直到达到特定时间范围为止;在下面的这段代码中,它应该在10:10:00 AM-10:10:10 AM退出并退出powerpoint。我有两个不同的实现,每个实现都有自己的问题,如果您能找到一种纠正它们的方法,那将是很好的。
在我的第一个实现中,它将打开文件,然后powerpoint直到时钟达到该时间范围才响应,然后按应有的方式退出应用程序。所以主要的问题是我根本看不到幻灯片放映。
Sub OpenFile()
Set pptApp = CreateObject("PowerPoint.Application")
pptApp.Visible = True
Set pptPres = pptApp.Presentations.Open("Compute_Dashboard.pptx")
ActivePresentation.SlideShowSettings.Run
Dim b As Boolean
b = True
While b = True
If Time() > TimeValue("10:10:00") And Time() < TimeValue("10:10:10") Then
b = False
ActivePresentation.SlideShowWindow.view.Exit
Application.Quit
End If
With ActivePresentation.Slides(1).SlideShowTransition
.AdvanceOnTime = msoTrue
.AdvanceTime = 3
End With
Wend
使用第二种实现,它可以打开文件,并且幻灯片可以正确循环播放,但是我无法在我的时间范围内退出幻灯片和幻灯片。
Sub OpenFile()
Set pptApp = CreateObject("PowerPoint.Application")
pptApp.Visible = True
Set pptPres = pptApp.Presentations.Open("Compute_Dashboard.pptx")
ActivePresentation.SlideShowSettings.Run
For Each s In ActivePresentation.Slides
With s.SlideShowTransition
.AdvanceOnTime = msoTrue
.AdvanceTime = 3
If Time() > TimeValue("10:10:00") And Time() < TimeValue("10:10:10") Then
ActivePresentation.SlideShowWindow.view.Exit
Application.Quit
End If
End With
Next
答案 0 :(得分:1)
尝试一下
Sub OpenFile()
Set pptApp = CreateObject("PowerPoint.Application")
pptApp.Visible = True
Set pptPres = pptApp.Presentations.Open("Compute_Dashboard.pptx")
ActivePresentation.SlideShowSettings.Run
For Each s In ActivePresentation.Slides
With s.SlideShowTransition
.AdvanceOnTime = msoTrue
.AdvanceTime = 3
End With
Next s
Dim b As Boolean
b = True
While b = True
If Time() > TimeValue("10:10:00") And Time() < TimeValue("10:10:10") Then
b = False
ActivePresentation.SlideShowWindow.view.Exit
Application.Quit
End If
Wend
我不是100%肯定您的意图-猜测您只是要将每张幻灯片的幻灯片前进时间设置为3秒,然后在特定时间退出。
设置幻灯片提前时间不会触发幻灯片前进。只需为该幻灯片设置该属性-3秒钟后前进。
由于它会在程序运行时眨眼间为所有幻灯片设置这些属性,因此它会在程序运行时有效地检查QUIT要求,因此永远不会退出。