Select PowerPoint 中的一系列幻灯片

Select a range of slides in PowerPoint

我在 MSDN 和网络上搜索了如何在 PowerPoint 中使用 VBA 到 select 一系列幻灯片,但无法弄清楚。看起来应该与ActiveWindow.Selection.SlideRange有关,但我不知道如何设置开始和结束幻灯片。我所能找到的只是如何使用 VBA 来操纵用户已经 select 编辑的一系列幻灯片;我需要将范围设置为 VBA select。

具体来说,我想 select 当前 select 编辑的幻灯片之前和之后的幻灯片以及 return 这 3 张幻灯片作为 SlideRange

您可以使用以下方式获取活动幻灯片索引:

Dim intIndex As Long
intIndex = ActiveWindow.View.Slide.SlideIndex

然后,使用Slides.Range()函数select此索引前后的幻灯片:

Dim r As SlideRange
Set r = ActivePresentation.Slides.Range(Array(intIndex - 1, intIndex, intIndex + 1))
r.Select

您可能希望防止索引小于 1 或大于演示文稿中的幻灯片数量。例如,如果在 运行 宏之前 select 编辑了第一张幻灯片,则不会有幻灯片 0 并且尝试 select 会导致错误。

如何 select 幻灯片前后的示例。然后这个select离子应用格式。

Sub ExampleSlideRange()
    Dim index, indexB, indexA, count As Integer
    Dim sr As SlideRange
    index = ActiveWindow.View.Slide.SlideIndex
    count = ActivePresentation.Slides.count
    indexB = index - 1
    indexA = index + 1
    If indexB = 0 Then indexB = 1
    If indexA > count Then indexA = count        
    Set sr = ActivePresentation.Slides.Range(Array(indexB, index, indexA))
    sr.Select
    With Windows(1).Selection.SlideRange
        .FollowMasterBackground = False
        .Background.Fill.PresetGradient msoGradientHorizontal, 1, msoGradientLateSunset
    End With
End Sub

对上述答案的一个小修改是,如果相应的窗格未处于活动状态,您不能 select 多张幻灯片(您可以设置对它们的引用,但 Select 方法意味着 UI 行动)。因此,在普通视图中,如果幻灯片或备注窗格处于活动状态,则只有范围内的最后一张幻灯片被 selected,并反映在缩略图窗格中。要设置多张幻灯片范围并在缩略图窗格中查看它们 select,您需要先激活该窗格,如下所示:

ActiveWindow.Panes(1).Activate
Set r = ActivePresentation.Slides.Range(Array(intIndex - 1, intIndex, intIndex + 1))
r.Select

尝试在其他视图中激活窗格可能会导致问题,因此您还应该先检查 ActiveWindow.ViewType。

另请注意,数组可以是数字幻灯片索引数组或包含幻灯片名称的字符串数组。