【问题标题】:Select a range of slides in PowerPoint在 PowerPoint 中选择一系列幻灯片
【发布时间】:2015-08-25 18:46:34
【问题描述】:

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

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

【问题讨论】:

    标签: vba powerpoint


    【解决方案1】:

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

    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,并且尝试选择它会导致错误。

    【讨论】:

    • 啊!使用 Range 属性中的 Array(item1, item2....) 函数来识别我要选择的项目。杰出的。 是我缺少的部分。谢谢!
    • 乐于助人。查看this out 了解更多关于Slides.Range() 的信息。
    • 运行此代码时缩略图视图处于活动状态是绝对关键的,否则只会选择数组中的最后一张幻灯片。您应该在创建 SlideRange 之前调用 ActiveWindow.Panes(1).Activate 并在其上调用 Select
    【解决方案2】:

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

    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
    

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-01
        相关资源
        最近更新 更多