如何在 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
使用 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