如何在Powerpoint VBA中以给定的时间/时间间隔关闭幻灯片显示视图?

时间:2019-07-03 18:15:22

标签: vba powerpoint powerpoint-vba

我最近启动了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

1 个答案:

答案 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要求,因此永远不会退出。