Rab*_*ski 38 properties field-codes microsoft-powerpoint
如何在 PowerPoint 2007 的幻灯片中插入文档属性(例如作者姓名)?我知道这可以在 Microsoft Word 中完成,但我找不到如何在 PowerPoint 中完成。
(这个想法是,使用文档属性很容易更改例如所有幻灯片中页脚的内容,即使您使用不同的母版页。如果有不同的解决方案,那也很好。)
Meh*_*lar 23
虽然 Word 可以做到这一点,但 PowerPoint 不能。AFAIK,您可以在 PPT 中拥有文档属性,但不能将它们插入到幻灯片中。PowerPoint 唯一可用的更新字段是日期和幻灯片编号。无论如何,VBA 中可能有一些解决方法来实现这一点。你可以在 Stackoverflow 上问这个来抓住机会。
刚刚编写了一个子例程,将命名属性放入所有幻灯片上的标记文本对象中。
将文件属性放在幻灯片上。创建一个文本框来保存字符串。在属性/替代文本中,将属性名称放入方括号中。
然后执行宏updateProperties()。
即[title]- 将允许在多个文件标题上更新
已写入两个特殊标签:
[copyright]将插入版权字符串,即© 1998-2013 P.Boothroyd, NIS Oskemen[page] 将从编辑器选项卡插入幻灯片编号' 将文档属性复制到所有幻灯片中
' (c) 2013, P.Boothroyd for NIS Oskemen
将流程页面调暗为幻灯片
子更新属性()
将页面调暗为幻灯片
Dim propname As String
' 解析当前演示文稿(文档)中的所有幻灯片
对于 Application.ActivePresentation.Slides 中的每个 processPage
' 扫描页面的所有元素,寻找带有“[”标签的“altText/title”字段的文本框
对于每个 obj 在 processPage.Shapes
If Left(obj.Title, 1) = "[" Then
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(propname, obj.TextFrame.TextRange.Text)
万一
万一
下一个'对象
下一页
结束子
' 获取指定的文档属性(具有可选的默认值)
函数 getProperty(propname, Optional def As String) As String
' 属性分配了默认值
getProperty = def
Dim 发现为布尔值
发现 = 错误
propname = LCase(propname)
' 版权是一种生成的财产
如果 propname = "copyright" 然后
昏暗的作者作为字符串
Dim company As String
Dim yearFrom As String
Dim yearTo As String
' 获取所有合适的变量
author = getProperty("作者", "")
company = getProperty("公司", "")
yearFrom = getProperty("创建", "")
yearTo = 格式(现在(),“YYYY”)
' 插入版权符号
getProperty = Chr(169) + " "
' 附上版权声明的年份跨度
如果一年从一年到那么
getProperty = getProperty + yearFrom + "-"
万一
getProperty = getProperty + yearTo
' 添加作者
getProperty = getProperty + " " + 作者
' 如果两者都存在,则为作者/公司添加分隔符
如果 Len(author) > 0 And Len(company) > 0 那么
getProperty = getProperty & ", "
万一
getProperty = getProperty & 公司
' 处理,所以返回值
发现 = 真
万一
' 在文档中插入幻灯片编号
如果 propname = "page" 那么
getProperty = processPage.SlideNumber
发现 = 真
万一
' 如果生成的名称创建返回值
如果找到然后转到 ret
' 扫描指定值的标准 MS(文件)属性
对于 Application.ActivePresentation.BuiltInDocumentProperties 中的每个 p
如果 LCase(p.Name) = propname 那么
getProperty = p.Value
发现 = 真
退出
万一
下一个
' 扫描命名值的自定义属性
如果找到然后转到 ret
对于 Application.ActivePresentation.CustomDocumentProperties 中的每个 p
如果 LCase(p.Name) = propname 那么
getProperty = p.Value
发现 = 真
退出
万一
下一个
回复:
结束函数
| 归档时间: |
|
| 查看次数: |
99229 次 |
| 最近记录: |