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

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

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

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

答案1

Word 可以做到这一点,但 PowerPoint 不能。据我所知,你可以在 PPT 中拥有文档属性,但不能将它们插入幻灯片中。PowerPoint 唯一可用的更新字段是日期和幻灯片编号。无论如何,VBA 中可能有一些解决方法来实现这一点。你可以在 Stackoverflow 上提问,碰碰运气。

答案2

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

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

然后执行宏updateProperties()

[title]- 允许在多个

已编写两个特殊标签:

  • [copyright]将插入版权字符串,即© 1998-2013 P.Boothroyd,NIS 厄斯克门
  • [page]将从编辑器选项卡插入幻灯片编号
  • ' 将文档属性复制到所有幻灯片中
    ' (c) 2013,P.Boothroyd 为 NIS Oskemen 提供
    昏暗的 processPage 作为幻灯片
    
    子更新属性()
        将页面调暗为幻灯片
        Dim propname 作为字符串
        '解析活动演示文稿(文档)中的所有幻灯片
        对于 Application.ActivePresentation.Slides 中的每个 processPage
            ' 扫描页面中所有带有标签“altText/title”字段的文本框元素,其中“[”
            对于 processPage.Shapes 中的每个对象
                如果 Left(obj.Title, 1) = "[" 那么
                    Dim 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,可选 def As String) As String
        ' 属性被分配了默认值
        获取属性 = def
        Dim found 作为布尔值
        发现 = 错误
        属性名称 = LCase(属性名称)
    
        ' 版权是一种生成的财产
        如果 propname =“copyright”则
            Dim 作者作为字符串
            Dim company 作为字符串
            Dim yearFrom 作为字符串
            Dim yearTo 作为字符串
    
            ' 获取所有适当的变量
            作者 = getProperty(“作者”, “”)
            公司 = getProperty(“公司”, “”)
            yearFrom = getProperty("创建", "")
            yearTo = 格式(Now(),“YYYY”)
    
            ' 插入版权符号
            获取属性 = Chr(169) + " "
    
            ' 附加版权声明的年份跨度
            如果年份从年份到则
                getProperty = getProperty + yearFrom + “-”
            万一
            获取属性 = 获取属性 + yearTo
    
            '添加作者
            getProperty = getProperty + “” + 作者
    
            ' 如果作者/公司都存在,则添加分隔符
            如果 Len(作者) > 0 且 Len(公司) > 0 则
                获取属性 = 获取属性 & ", "
            万一
            getProperty = getProperty & company
    
            ' 已处理,因此返回值
            找到 = 真
        万一
    
        ' 将幻灯片编号插入文档
        如果 propname =“page”则
            获取属性 = processPage.SlideNumber
            找到 = 真
        万一
    
        ' 如果生成的名称创建则返回值
        如果找到则转到 ret
    
        ' 扫描指定值的标准 MS(文件)属性
        对于 Application.ActivePresentation.BuiltInDocumentProperties 中的每个 p
            如果 LCase(p.Name) = propname 那么
                获取属性 = p.值
                找到 = 真
                退出
            万一
        下一页
    
        ' 扫描指定值的自定义属性
        如果找到则转到 ret
        对于 Application.ActivePresentation.CustomDocumentProperties 中的每个 p
            如果 LCase(p.Name) = propname 那么
                获取属性 = p.值
                找到 = 真
                退出
            万一
        下一页
    保留:
    结束函数
    

    答案3

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

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

    1. 选择要设置书签的形状或文本。
    2. 选择文件 | 属性...并激活自定义选项卡。
    3. 输入书签的名称。
    4. 勾选“链接到内容”。勾选“链接到内容”时,旁边下拉框中列出的值是您选择的参考。
    5. 单击“添加”。
    6. 单击“确定”关闭“属性”对话框。

    现在您已创建书签,您可以按如下方式跳转到该书签:
    1. 选择“编辑”|“转到属性...”
    2. 单击对话框中的“属性”名称(这是您为书签指定的名称)。
    3. 单击“转到”。

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

    答案4

    使用 ppt 2019 更新处理代码:我稍微改变了 for-next 例程,原因是前端用户可以更轻松地通过鼠标右键更改“替代文本”:

        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
    

    相关内容