Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Slide・スライド » 非表示スライドを一括削除するPowerPointマクロ

非表示スライドを一括削除するPowerPointマクロ

対象:PowerPoint2003, PowerPoint2007, PowerPoint2010, PowerPoint2013

非表示スライドを一括削除するPowerPointマクロ

「powerpoint 非表示スライドを削除 vba」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。

非表示に設定したスライドを削除する、PowerPointのマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。

[スポンサードリンク]

非表示スライドを一括削除するマクロ

以下のようなマクロで、アクティブなプレゼンテーションファイルの非表示スライドを、一気に削除することができます。

Sub 非表示スライドを一括削除する()
 Dim msg As String
 Dim i As Long

 msg = "非表示スライドをすべて削除していいですか?"
 If MsgBox(msg, vbYesNo) = vbNo Then Exit Sub

 With ActivePresentation
 For i = .Slides.Count To 1 Step -1
  With .Slides(i)
   If .SlideShowTransition.Hidden = msoTrue Then
    .Delete
   End If
  End With ' .Slides(i)
 Next i
 End With ' ActivePresentation
End Sub

上記のマクロを実行すると「非表示スライドをすべて削除していいですか?」という確認メッセージが表示され、[いいえ]ボタンが押されたときには、マクロを終了します。
 msg = "非表示スライドをすべて削除していいですか?"
 If MsgBox(msg, vbYesNo) = vbNo Then Exit Sub

[はい]ボタンをクリックすると、非表示になっているスライドの削除が開始されます。

アクティブなプレゼンテーションの全スライドに対して、後からループを回して、
 With ActivePresentation
 For i = .Slides.Count To 1 Step -1

非表示に設定されているスライドならば、
  With .Slides(i)
   If .SlideShowTransition.Hidden = msoTrue Then

削除しています。
    .Delete

今回のような削除を行うマクロでは、削除した瞬間にオブジェクトの数が変更になってしまうため前からループを回すと面倒です。ご紹介したマクロのように、後からループを回してやればシンプルなコードで済ませられます。

PowerPointでマクロを作るにはオブジェクトブラウザの利用が必須

プログラミングの経験のある方、Excelマクロの経験のある方なら、ロジック自体はまったく難しくないはずです。

問題は、SlideShowTransition.Hiddenプロパティで、スライドの表示・非表示がわかるということを、どうやって知ればいいのか、でしょう。

2003までのPowerPointならば、マクロ記録でオブジェクト式についてのヒントを得ることも可能でした。

しかし、PowerPointでは、2007で中途半端なマクロ記録の状態になり、2010からは完全にマクロ記録機能がなくなっています。

最近のPowerPointで、コピペではなく自分でマクロを作ろうとする場合、オブジェクトブラウザの利用が必須だと感じています。

どうやってSlideShowTransition.Hiddenプロパティをみつけるのか

参考までに、私がSlideShowTransition.Hiddenプロパティをどうやって探したのかを記述しておきます。

まず「hidden」という単語をオブジェクトブラウザで検索しました。

非表示であることを示すプロパティには、おそらく「hidden」という単語が含まれているだろう、という推測からです。この推測ができるようには、ある程度のプログラミングの経験が必要になります。

「hidden」で検索すると下図のように、SlideShowTransitionオブジェクトにHiddenプロパティが見つかります。

非表示スライドを一括削除するPowerPointマクロ

ヘルプを調べると、確かにこのSlideShowTransition.Hiddenプロパティで、スライドが非表示であるかどうかを判別できることがわかります。

次は、このHiddenプロパティを持っている、SlideShowTransitionオブジェクトを、どうやって取得するかです。

オブジェクトブラウザで「SlideShowTransition」を検索すると、いくつかのオブジェクトにSlideShowTransitionプロパティが存在していることがわかります。

非表示スライドを一括削除するPowerPointマクロ

この中から、今回のマクロではSlideオブジェクトのSlideShowTransitionプロパティを利用するのが簡単そうという判断をして、ご紹介したようなマクロにしました。この判断ができるようになるにはPowerPointマクロの経験が、ある程度必要になります。

どうやってその経験値を上げるかですが、結局は基礎知識を得たあとに、日々トレーニングするしかないと考えています。

オブジェクト式を見たときに、ヘルプで調べたり、そのオブジェクト式がどんなオブジェクトを取得しているのかを推測する癖をつけていくと、少しずつ経験値が上がり、判断できるようになっていくはずです。

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Slide・スライド » 非表示スライドを一括削除するPowerPointマクロ

「Slide・スライド」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.