0

同じマスター スライドに基づいた 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
4

1 に答える 1

1

まずSlideMaster、プロパティを直接設定できないようです。ただし、別のアプローチを試すこともできます。

テンプレートを開いているプレゼンテーションまたはPresentationオブジェクトへの参照に設定する場合:

ppPres.ApplyTemplate(ActivePresentation.FullName)

テンプレートをディスク上のファイルに設定する場合:

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

第二に、私はあなたのループの論理を完全に理解していません。最初にループするファイルのリストを取得し、次に開いているすべてのプレゼンテーションをループしてvFile、一致するものがないたびにファイルを1回開きますか?vFile無関係なプレゼンテーションを多数開いている場合は、それぞれが数回開きます。

私のおすすめ:

  1. 開いているプレゼンテーションをすべて閉じる
  2. ループcolFiles
  3. コマンドを使用してテンプレートを設定しますApplyTemplate("C:\PATH-TO-FILE.potx")(使用ActivePresentationすると予期しない結果が生じる場合があります:-))
于 2012-08-31T09:00:56.220 に答える