如何在powerpoint VBA中以给定的时间/时间间隔关闭幻灯片放映视图?

如何在powerpoint VBA中以给定的时间/时间间隔关闭幻灯片放映视图?,vba,powerpoint,Vba,Powerpoint,我最近开始使用VBA,并尝试创建一个项目,该项目将打开一个powerpoint文件(compute_dashboard.pptx),并将其放在幻灯片视图中。它将通过幻灯片和循环,直到达到特定的时间范围;在下面的代码中,它应该在上午10:10:00-上午10:10:10退出并退出powerpoint。我有两个不同的实现,每个都有各自的问题,如果你能找到一种方法来纠正它们中的任何一个,那就太好了 在我的第一个实现中,它将打开文件,然后powerpoint在时钟到达该时间范围之前不会响应,这将像它应该

我最近开始使用VBA,并尝试创建一个项目,该项目将打开一个powerpoint文件(compute_dashboard.pptx),并将其放在幻灯片视图中。它将通过幻灯片和循环,直到达到特定的时间范围;在下面的代码中,它应该在上午10:10:00-上午10:10:10退出并退出powerpoint。我有两个不同的实现,每个都有各自的问题,如果你能找到一种方法来纠正它们中的任何一个,那就太好了

在我的第一个实现中,它将打开文件,然后powerpoint在时钟到达该时间范围之前不会响应,这将像它应该的那样退出应用程序。所以主要的问题是我根本看不到幻灯片

子OpenFile()
设置pptap=CreateObject(“PowerPoint.Application”)
pptApp.Visible=True
设置pptPres=pptApp.Presentations.Open(“Compute_Dashboard.pptx”)
ActivePresentation.SlideShowSettings.Run
作为布尔值的dimb
b=正确
而b=真
如果Time()>TimeValue(“10:10:00”)和Time()
在第二个实现中,它会正确地打开文件和幻灯片循环,但是在我的时间范围内,我无法让幻灯片和powerpoint退出


子OpenFile()
设置pptap=CreateObject(“PowerPoint.Application”)
pptApp.Visible=True
设置pptPres=pptApp.Presentations.Open(“Compute_Dashboard.pptx”)
ActivePresentation.SlideShowSettings.Run
对于ActivePresentation.Slides中的每个
使用s.SlideShowTransition
.AdvanceOnTime=msoTrue
.AdvanceTime=3
如果Time()>TimeValue(“10:10:00”)和Time()
试试这个

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
子OpenFile()
设置pptap=CreateObject(“PowerPoint.Application”)
pptApp.Visible=True
设置pptPres=pptApp.Presentations.Open(“Compute_Dashboard.pptx”)
ActivePresentation.SlideShowSettings.Run
对于ActivePresentation.Slides中的每个
使用s.SlideShowTransition
.AdvanceOnTime=msoTrue
.AdvanceTime=3
以
下一个s
作为布尔值的dimb
b=正确
而b=真
如果Time()>TimeValue(“10:10:00”)和Time()
我不是100%确定您在这里的意图-猜测您只是想将每张幻灯片的幻灯片推进时间设置为3秒,并在特定时间退出

设置幻灯片前进时间不会触发幻灯片前进。它只是为那张幻灯片设置了那个属性——3秒后前进


由于它在程序运行时一眨眼就为所有幻灯片设置了这些属性,因此它会在程序运行时有效地检查退出要求,因此永远不会退出。

使用第一组代码,将时间推进代码从while循环中拉出,只循环退出部分代码的时间。您为提升设置的值不会触发提升,只是设置提升前分配的时间。第二个示例失败,因为在为每张幻灯片检查/设置这些设置之后立即触发If语句。这不是一个连续的事情。它只在该子激活时发生一次(并且对于每张幻灯片)。啊,我明白为什么我最初的if语句不起作用了。使用while循环可以连续检查,而不是一次。我试着运行你的代码,结果是出现了一个空白的白色屏幕,当到达时间范围时关闭。我想白色屏幕一定是幻灯片,但我不明白为什么它会这样显示。