「vba スライドマスター削除」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが、ありました。
スライドマスターの不要なレイアウトを削除するPowerPoint VBA(Visual Basic for Applications)のコードを探している方による検索でしょうか。
自分がまず使うことのないレイアウトを削除するPowerPointマクロを既にご紹介していますが、実務では、複数のプレゼンテーションファイルからスライドをコピペしまくった結果、複数のスライドマスターが存在してしまっているのでスッキリさせたいという状況が、ありそうに思えます。
複数のスライドマスターから不要なレイアウトを削除するサンプルマクロ
以下のようなマクロで、複数のスライドマスターから使われていないレイアウトを削除することができます。
Dim dsn As Design
Dim i As Long
On Error GoTo ERR_HNDL
For Each dsn In ActivePresentation.Designs
With dsn.SlideMaster.CustomLayouts
For i = .Count To 1 Step -1
.Item(i).Delete
Next i
End With
Next dsn
Exit Sub
ERR_HNDL:
Select Case Err.Number
Case -2147188160
Err.Clear
Resume Next
Case Else
MsgBox "エラーが発生したのでマクロを終了します。 " & Err.Number
Exit Sub
End Select
サンプルマクロの解説
丁寧に処理するのなら、レイアウトが使われているかどうかを調べて、使われていないレイアウトを削除するという流れなのでしょうが、使われているレイアウトを削除しようとしたときには、
「実行時エラー'-2147188160(80048240)': Slide(不明なメンバー):無効な要求です。マスターを削除できません。」
というエラーが発生することを利用したマクロにしました。
実行時エラーが発生したら、ラベル・ERR_HNDLに飛ぶようにしておいて、
On Error GoTo ERR_HNDL
使われているレイアウトだったときには、エラーを無視して処理を継続しています。
ERR_HNDL:
Select Case Err.Number
Case -2147188160
Err.Clear
Resume Next
削除処理は、アクティブなプレゼンテーションの、全DesignにFor Each~Nextループを回して、
For Each dsn In ActivePresentation.Designs
各Designの全CustomLayoutに対するFor~Nextループで行っています。
With dsn.SlideMaster.CustomLayouts
For i = .Count To 1 Step -1
.Item(i).Delete
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Slide・スライド » 複数のスライドマスターから未使用のレイアウトを削除するパワポマクロ