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。
另请注意,数组可以是数字幻灯片索引数组或包含幻灯片名称的字符串数组。
我在 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。
另请注意,数组可以是数字幻灯片索引数组或包含幻灯片名称的字符串数组。