【问题标题】:Powerpoint vba update slide masterPowerpoint vba 更新幻灯片母版
【发布时间】:2012-11-27 17:23:55
【问题描述】:

我的 PowerPoint 演示文稿集数量不多但不断增长(约 20 个),它们都基于同一张母版幻灯片。我想做的是确保如果我在任何这些文件上创建新布局或修改现有布局,我可以更新所有其他演示文稿以以编程方式反映这一点。这是我的尝试。我已经显示了它在该行上方生成的错误。

Sub UpdateTemplates()

Dim colFiles As New Collection
Dim vFile As Variant
Dim ppPres As Presentation

RecursiveDir colFiles, "C:\Users\Debra\Dropbox\School\Mathematics\Notes\Data", "*.pptm", True

For Each vFile In colFiles
    Debug.Print "Updating templates in " & vFile
    Set ppPres = Presentations.Open(vFile)
    ppPres.ApplyTemplate ("C:\Users\Debra\Dropbox\School\Mathematics\Notes\Topic Blank.potm")

Next vFile

End Sub

【问题讨论】:

    标签: vba powerpoint


    【解决方案1】:

    首先,您似乎无法直接设置SlideMaster 属性。不过,您可以尝试不同的方法。

    如果要将模板设置为打开的演示文稿或对Presentation 对象的引用:

    ppPres.ApplyTemplate(ActivePresentation.FullName)
    

    如果要将模板设置为磁盘上的文件:

    ppPres.ApplyTemplate("C:\PATH-TO-FILE.potx")
    

    第二,我不太明白你循环中的逻辑。首先,您获得要循环的文件列表,然后循环所有打开的演示文稿并在每次没有匹配时打开文件vFile 一次?如果您打开了许多不相关的演示文稿,这将打开每个 vFile 多次。

    我的建议:

    1. 关闭所有打开的演示文稿
    2. 循环colFiles
    3. 使用ApplyTemplate("C:\PATH-TO-FILE.potx") 命令设置模板(使用ActivePresentation 有时会导致意外结果:-))

    【讨论】:

    • 很好地理解循环逻辑!
    • 我会看看如何使用模板。我目前没有使用模板。也许我应该是。我会告诉你的,
    • 很遗憾,虽然没有生成错误消息,但幻灯片母版并未更新。
    • @debragail 使用两种方法(ActivePresentation 和模板)同样的问题?
    • 我发现 ApplyTemplate 方法并非在所有情况下都有效,似乎如果演示文稿很复杂,那么该过程就会默默地失败。 This 站点表明 PowerPoint 模板比用于 Word 的模板更复杂,例如并且您可以使用“重用幻灯片”功能手动更改卡组上的模板。
    猜你喜欢
    • 2011-12-13
    • 2019-05-07
    • 1970-01-01
    • 2019-03-12
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    相关资源
    最近更新 更多