2017-06-14 2 views
1

現在のフォルダにあるすべてのPowerPoint(* .pptx)を開き、すべての画像とテキストボックスのスライドマスタをクリアして保存したいと思います。VBAを使用してPowerPoint内のすべての情報のスライドマスターをクリアする方法は?

(私の記事はほとんどがコードだと言いますので、詳細を追加する必要がありますので、ジョージワシントンの引用です。「自分の評判を尊重すれば良質の男性と仲良くなります;私のコメントにさらに

新しいコード

Sub DeleteSlideMasterShapes() 
    Dim i As Long 
    Dim shp As Shape 

    With ActivePresentation 
     For i = .Designs.Count To 1 Step -1 
      For Each shp In .Designs(i).SlideMaster.Shapes 
       shp.Delete 
      Next 
     Next i 
    End With 
End Sub 

Sub loopFiles() 

Dim fso As New FileSystemObject 
Dim fil As File 
Dim fold As Folder 
Dim yourfolder As String 

Set fold = fso.GetFolder(Application.ActivePresentation.Path) 

For Each fil In fold.Files 

    If InStr(1, fil.Name, ".pptx") > 0 Then 
     Application.Presentations.Open fil.Path 

     Call DeleteSlideMasterShapes 

     ActivePresentation.Save 
     ActivePresentation.Close 

    End If 

Next fil 

End Sub 
+0

少なくとも1つのスライドマスターが必要です。すべてのスライダマスターを削除することはできません。最後のものを削除しようとすると、エラーが発生します。ブック内のすべてのシートを削除しようとするようなものです。 SMをクリアすることに関して、達成しようとしていることを正確に説明できますか? –

+0

見出しにイメージとテキストボックスを含むスライドマスターがあり、現在それらの情報をクリアしたい –

答えて

0

)「悪い会社に比べて、あなたがスライドマスタを削除したい場合は、その後の図形を削除するには、この

Sub DeleteSlideMaster() 
    Dim i As Long 

    With ActivePresentation 
     On Error Resume Next 
     For i = .Designs.Count To 1 Step -1 
      .Designs(i).SlideMaster.Delete 
     Next i 
     On Error GoTo 0 
    End With 
End Sub 

を使用slidemasterの、私はあなたのクエリを理解していない場合は、

+0

VBAの新機能です削除されますか? –

+0

私はあなたに答えを与えることができますが、私はあなたに試してみたいですか?あなたが立ち往生したら、あなたが試したコードを投稿してください。そこからそれを取るでしょう –

+0

それは美しいです、ありがとう –

0

に別のアプローチをお気軽にお尋ねください、場合にあなたがすべてのスライドマスターとマスターのレイアウトからすべての図形を削除するこの

Sub DeleteSlideMasterShapes() 
    Dim i As Long 
    Dim shp As Shape 

    With ActivePresentation 
     For i = .Designs.Count To 1 Step -1 
      For Each shp In .Designs(i).SlideMaster.Shapes 
       shp.Delete 
      Next 
     Next i 
    End With 
End Sub 

を使用:

Sub DeleteSlideMasterShapes() 
' Including shapes on layouts 

    Dim oDes As Design 
    Dim oLay As CustomLayout 

    With ActivePresentation 

     ' For each slide master: 
     For Each oDes In .Designs 

      ' Delete the shapes on the master 
      oDes.SlideMaster.Shapes.Range.Delete 

      ' Then delete the shapes from each layout under 
      ' the slide master: 
      For Each oLay In oDes.SlideMaster.CustomLayouts 
       oLay.Shapes.Range.Delete 
      Next 

     Next 

    End With 

End Sub 
+0

こんにちはスティーブ、アプローチに感謝します。私はそれをテストしたいと思いますが、私はVBAの2日で新しく、Sub loopFiles()へのインターフェイス方法を知らないでしょう –

+0

あなたは既にそれをやっています... DeleteSlideMasterShapesサブを私のものに置き換えてください。 –

+0

コンパイルエラー:Sub loopFiles()でユーザー定義型が定義されていません –

関連する問題