在PowerPoint中选择一系列幻灯片

时间:2015-08-25 18:46:34

标签: vba powerpoint powerpoint-vba

我已经搜索过MSDN和网页,了解如何使用VBA在PowerPoint中选择一系列幻灯片,但无法弄明白。看起来它应该与ActiveWindow.Selection.SlideRange有关,但我无法弄清楚如何设置开始和结束幻灯片。我能找到的就是如何使用VBA来操作用户已经选择的一系列幻灯片;我需要让VBA选择范围。

具体来说,我想选择当前选定幻灯片之前的幻灯片和幻灯片,并将这3张幻灯片作为SlideRange返回。

3 个答案:

答案 0 :(得分:3)

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

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

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

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

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

答案 1 :(得分:1)

如何选择前后幻灯片的示例。然后应用此选择格式。

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

答案 2 :(得分:0)

对上述答案的一个较小修改是,如果相应的窗格未处于活动状态,则您不能选择多张幻灯片(可以设置对它们的引用,但是Select方法意味着UI操作)。因此,在“普通”视图中,如果幻灯片或便笺窗格处于活动状态,则仅选择范围中的最后一张幻灯片,这将反映在缩略图窗格中。要设置多幻灯片范围并在缩略图窗格中查看它们,请首先按以下步骤激活该窗格:

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

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

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