Powerpoint vba更新幻灯片母版

时间:2012-08-31 00:23:23

标签: vba powerpoint powerpoint-vba

我有一个适度但不断增长的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

1 个答案:

答案 0 :(得分: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有时会导致意外结果:-))