Answers:
尽管Word可以做到,但PowerPoint无法做到。AFAIK,您可以在PPT中拥有文档属性,但是不能将它们插入幻灯片。PowerPoint唯一可用的更新字段是日期和幻灯片编号。无论如何,VBA中可能有一些解决方法可以实现此目的。您可以在Stackoverflow上要求这个机会。
刚刚编写了一个子例程,将命名属性放入所有幻灯片中的标记文本对象。
将文件属性放到幻灯片上。创建一个文本框来保存字符串。在属性/替代文本中,将属性名称放在方括号中。
然后执行宏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 找到=真 退出 万一 下一个 退回: 结束功能
一种解决方法是使用可以轻松“转到”的自定义属性(无需浏览幻灯片)。
从http://msdn.itags.org/powerpoint/4426/ :
- 选择要设置书签的形状或文本。
- 选择文件| 属性...,然后激活自定义标签。
- 输入书签的名称。
- 勾选“链接到内容”。当您勾选“链接到内容”时,相邻下拉框中列出的值是对所选内容的引用。
- 单击添加。
- 单击“确定”关闭“属性”对话框。
现在,您已经创建了书签,可以按以下步骤跳转到该书签:
1.选择Edit | Edit。转到属性...
2.在对话框中单击属性名称(这是您为书签指定的名称)。
3.单击转到。
“转到”对话框显示您可以双击的书签列表,并转到您喜欢的文本框,可以对其进行编辑/粘贴。
在Powerpoint中执行此操作的最简单方法(至少对于将出现在每张幻灯片上的值而言)是编辑幻灯片母版。将作者姓名放在此处。
(Word可以让您(而其他任何人都没有做到)的可能原因是Microsoft的各个团队很少互相交谈...)
使用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