繁体   English   中英

VBA代码,用于为幻灯片提供一个常量名称

[英]VBA code for giving slides a constant name

我正在努力减少使某些幻灯片(我们称其为SlideXYZ)为最新状态所需的精力。 SlideXYZ是重要的内容幻灯片,可以在多个幻灯片组中找到。 我最初创建的幻灯片对象在“源幻灯片”中进行更改后会自动更新。 但是,不幸的是,幻灯片对象不包含动画(它们只是实际幻灯片的快照)。 我现在正在尝试编写一个VBA脚本,该脚本将使用较新版本的SlideXYZ搜索并替换每个卡座中的SlideXYZ。 但是,幻灯片编号是动态的(在上面添加新幻灯片时,它会更改)。 我需要对SlideXYZ的静态,恒定引用。

我考虑过一次将SlideXYZ复制到所有演示文稿中,然后在需要更新时使用Slide.Name属性查找其所有实例。

但是,每次将幻灯片粘贴到新演示文稿中时,PowerPoint似乎都会重新分配Slide.Name。 我需要一个不会更改的参考,以便可以找到并替换SlideXYZ。

@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

如您SlideIndexSlideIndexSlideNumberSlideIDName都不能用来标识复制的幻灯片。

您可以使用特征形状的“替代文本”来识别幻灯片:
只需右键单击形状并编辑其替代文本即可。

幻灯片注释也可能有助于识别幻灯片。

以下将一些幻灯片信息打印到调试窗口:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM