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