PowerPoint:如何在幻灯片中插入文档属性(又名“字段”)?


31

如何在PowerPoint 2007的幻灯片中插入文档属性(例如作者的姓名)?我知道可以在Microsoft Word中完成此操作,但是我找不到在PowerPoint中的操作方法。

(这样的想法是,即使您使用不同的母版页,也可以通过document属性轻松更改例如所有幻灯片中的页脚内容。如果有不同的解决方案,那也可以。)

Answers:



6

刚刚编写了一个子例程,将命名属性放入所有幻灯片中的标记文本对象。

将文件属性放到幻灯片上。创建一个文本框来保存字符串。在属性/替代文本中,将属性名称放在方括号中。

然后执行宏updateProperties()

[title]-将允许多个文件标题更新

编写了两个特殊标签:

  • [copyright]会插入版权字符串,即©1998-2013 P.Boothroyd,NIS Oskemen
  • [page] 从编辑器选项卡中插入幻灯片编号
  • '将文档属性复制到所有幻灯片中
    '(c)2013,NIS Oskemen的P.Boothroyd
    昏暗的processPage作为幻灯片
    
    子updateProperties()
        昏暗的页面作为幻灯片
        昏暗的propname作为字符串
        解析活动演示文稿中的所有幻灯片(文档)
        对于Application.ActivePresentation.Slides中的每个processPage
            '扫描页面的所有元素以查找带有“ [”的带有标记的“ altText / title”字段的文本框
            对于processPage.Shapes中的每个obj
                如果Left(obj.Title,1)=“ [”然后
                    昏暗sStart,sEnd作为整数
                    '从方括号之间提取属性
                    sStart = 2
                    sEnd = InStr(2,obj.Title,“]”)
                    propname = Trim(Mid(obj.Title,sStart,sEnd-2))
                    如果obj.Type = msoTextBox,则
                        '将文本框设置为要求的值
                        obj.TextFrame.TextRange.Text = getProperty(属性名,obj.TextFrame.TextRange.Text)
                    万一
                万一
            下一个对象
        下一页
    结束子
    
    '获取命名的文档属性(具有可选的默认值)
    函数getProperty(propname,Optional def As String)As String
        '属性分配了默认值
        getProperty = def
        发现昏暗为布尔值
        发现=错误
        属性名= LCase(属性名)
    
        '版权是一种产生的财产
        如果propname =“ copyright”,则
            昏暗的作者As String
            昏暗的公司As String
            Dim yearFrom As String
            Dim yearTo作为字符串
    
            '获取所有适当的变量
            作者= getProperty(“作者”,“”)
            公司= getProperty(“公司”,“”)
            yearFrom = getProperty(“ created”,“”)
            yearTo = Format(Now(),“ YYYY”)
    
            插入版权符号
            getProperty = Chr(169)+“”
    
            附上版权保护年限
            如果yearFrom yearTo然后
                getProperty = getProperty + yearFrom +“-”
            万一
            getProperty = getProperty + yearTo
    
            '添加作者
            getProperty = getProperty +“” +作者
    
            '如果作者/公司同时存在,请添加分隔符
            如果Len(作者)> 0和Len(公司)> 0,则
                getProperty = getProperty&“,”
            万一
            getProperty = getProperty和公司
    
            '已处理,因此返回值
            找到=真
        万一
    
        '将幻灯片编号插入文档
        如果propname =“ page”,则
            getProperty = processPage.SlideNumber
            找到=真
        万一
    
        '如果创建的生成名称返回值
        如果找到则转到跳转
    
        '扫描命名值的标准MS(文件)属性
        对于Application.ActivePresentation.BuiltInDocumentProperties中的每个p
            如果LCase(p.Name)=属性名
                getProperty = p.Value
                找到=真
                退出
            万一
        下一个
    
        '扫描命名值的自定义属性
        如果找到则转到跳转
        对于Application.ActivePresentation.CustomDocumentProperties中的每个p
            如果LCase(p.Name)=属性名
                getProperty = p.Value
                找到=真
                退出
            万一
        下一个
    退回:
    结束功能
    

    1

    一种解决方法是使用可以轻松“转到”的自定义属性(无需浏览幻灯片)。

    http://msdn.itags.org/powerpoint/4426/

    1. 选择要设置书签的形状或文本。
    2. 选择文件| 属性...,然后激活自定义标签。
    3. 输入书签的名称。
    4. 勾选“链接到内容”。当您勾选“链接到内容”时,相邻下拉框中列出的值是对所选内容的引用。
    5. 单击添加。
    6. 单击“确定”关闭“属性”对话框。

    现在,您已经创建了书签,可以按以下步骤跳转到该书签:
    1.选择Edit | Edit。转到属性...
    2.在对话框中单击属性名称(这是您为书签指定的名称)。
    3.单击转到。

    “转到”对话框显示您可以双击的书签列表,并转到您喜欢的文本框,可以对其进行编辑/粘贴。


    1

    在Powerpoint中执行此操作的最简单方法(至少对于将出现在每张幻灯片上的值而言)是编辑幻灯片母版。将作者姓名放在此处。

    (Word可以让您(而其他任何人都没有做到)的可能原因是Microsoft的各个团队很少互相交谈...)


    1
    请参阅我的问题的第二段:“ ...即使使用不同的母版页...”
    Rabarberski 2012年

    0

    使用ppt 2019更新句柄代码:我稍稍更改了for-next例程,原因是前端用户可以通过鼠标右键更轻松地更改“ alternativetext”:

        For Each ShapeObj In processPage.Shapes
             If Left(ShapeObj.AlternativeText, 1) = "[" Then
            'If Left(ShapeObj.Title, 1) = "[" Then
                Dim sStart, sEnd As Integer
                ' extract property from between square brackets
                sStart = 2
                'sEnd = InStr(2, ShapeObj.Title, "]")
                sEnd = InStr(2, ShapeObj.AlternativeText, "]")
                'propname = Trim(Mid(ShapeObj.Title, sStart, sEnd - 2))
                propname = Trim(Mid(ShapeObj.AlternativeText, sStart, sEnd - 2))
                    ShapeObj.TextFrame.TextRange.Text = getProperty(propname, ShapeObj.TextFrame.TextRange.Text)
    
            End If
        Next ' obj
    
    By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
    Licensed under cc by-sa 3.0 with attribution required.