我正在努力减少使某些幻灯片(我们称其为SlideXYZ)为最新状态所需的精力。 SlideXYZ是重要的内容幻灯片,可以在多个幻灯片组中找到。我最初创建的幻灯片对象在“源幻灯片”中进行更改后会自动更新。但是,不幸的是,幻灯片对象不包含动画(它们只是实际幻灯片的快照)。我现在正在尝试编写一个VBA脚本,该脚本将使用较新版本的SlideXYZ搜索并替换每个卡座中的SlideXYZ。但是,幻灯片编号是动态的(在上面添加新幻灯片时,它会更改)。我需要对SlideXYZ的静态,恒定引用。
我想到将一次将SlideXYZ复制到所有演示文稿中,然后在需要更新时使用Slide.Name属性查找其所有实例。
但是,每次将幻灯片粘贴到新演示文稿中时,PowerPoint似乎都会重新分配Slide.Name。我需要一个不会更改的参考,以便可以找到并替换SlideXYZ。
答案 0 :(得分:0)
您已经发现:SlideIndex
,SlideNumber
,SlideID
和Name
都不能用来标识复制的幻灯片。
您可以使用特征形状的“替代文字”来识别幻灯片:
只需右键单击形状并编辑其替代文本即可。
幻灯片注释也可能有助于识别幻灯片。
以下将一些幻灯片信息打印到调试窗口:
Private Sub IdentifyMySlide()
Dim myslide As PowerPoint.Slide
For Each myslide In ActivePresentation.Slides
Debug.Print "Index: " & myslide.SlideIndex,
Debug.Print "Number: " & myslide.SlideNumber,
Debug.Print "ID: " & myslide.SlideID,
Debug.Print "Name: " & myslide.Name,
If myslide.Shapes.Count > 0 Then
Debug.Print "Alternative ShapeText: " & myslide.Shapes(1).AlternativeText,
End If
If myslide.HasNotesPage Then
If myslide.NotesPage(1).Shapes.Count > 0 Then
If myslide.NotesPage(1).Shapes(1).HasTextFrame Then
Debug.Print "Notes: " & Left(myslide.NotesPage(1).Shapes(1).TextFrame.TextRange.Text, 10)
Else
Debug.Print
End If
Else
Debug.Print
End If
Else
Debug.Print
End If
Next myslide
End Sub
答案 1 :(得分:0)
@Asger的建议可行,但更一致的方法(IMO)将是使用标签。幻灯片上的任何演示文稿,幻灯片或形状都可以以标签形式附加一段或多段文本。
例如:
ActivePresentation.Slides(1).Tags.Add "SlideIdentifier", "Bob"
将在当前演示文稿的幻灯片#1上创建一个名为SlideIdentifier的标签,其值为Bob。这些标签将随幻灯片一起移动,无论它走到哪里。
我维护的PowerPoint常见问题解答上的此页面包含有关使用标签的更多信息:
http://www.pptfaq.com/FAQ00815_Working_with_Tags_-and_a_bit_about_Functions-.htm