我有一个包含许多幻灯片的 PowerPoint 演示文稿,所有幻灯片都只有一个文本框。本质上,我试图随机播放幻灯片,并确保幻灯片的一个属性(文本框的第一行)在标题幻灯片之后的前 5 张幻灯片上是唯一的。
为此,我的想法是创建一个列表,其中包含从幻灯片 2 到幻灯片 6 的 PowerPoint 幻灯片文本框的第一行。
为了确保此列表中的每个值都是唯一的,我的计划是迭代此列表,并在发现重复值时将幻灯片发送到演示文稿的末尾。
我是 vba 新手,希望得到任何反馈,因为在实现初始随机播放后我非常迷失
Sub ShuffleSlides()
numStart = 1
numStop = 5
FirstSlide = 2
LastSlide = 21
Randomize
For j = numStart To numStop
For i = FirstSlide To LastSlide
RSN = Int((LastSlide - FirstSlide + 1) * Rnd + FirstSlide)
ActivePresentation.Slides(i).MoveTo (RSN)
Next i
Next j
End Sub
我希望获得一些方向感,了解如何找到从每个文本框检索第一行的信息以制作此列表,因为我无法找到类似的信息。
请尝试一下。
Option Explicit
Sub ShuffleSlides()
Dim Sld As Slide, Shp As Shape
Dim oDic, aTxt, i As Long, RSN
Const NumStop = 5
Const FirstSlide = 2
Const LastSlide = 21
Set oDic = CreateObject("scripting.dictionary")
Randomize
For i = FirstSlide To LastSlide
RSN = Int((LastSlide - FirstSlide + 1) * Rnd + FirstSlide)
Set Sld = ActivePresentation.Slides(RSN)
' Get the first line
aTxt = Split(Sld.Shapes(1).TextFrame.TextRange.Text, Chr(13))
' Check if the first line is duplicated
If Not oDic.exists(aTxt(0)) Then
' Move slide
Sld.MoveTo FirstSlide
oDic(aTxt(0)) = ""
If oDic.Count = NumStop Then Exit For
End If
Next i
End Sub
微软文档: