「powerpoint 非表示スライドを削除 vba」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
非表示に設定したスライドを削除する、PowerPointのマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
非表示スライドを一括削除するマクロ
以下のようなマクロで、アクティブなプレゼンテーションファイルの非表示スライドを、一気に削除することができます。
Dim msg As String
Dim i As Long
msg = "非表示スライドをすべて削除していいですか?"
If MsgBox(msg, vbYesNo) = vbNo Then Exit Sub
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プロパティが見つかります。
ヘルプを調べると、確かにこのSlideShowTransition.Hiddenプロパティで、スライドが非表示であるかどうかを判別できることがわかります。
次は、このHiddenプロパティを持っている、SlideShowTransitionオブジェクトを、どうやって取得するかです。
オブジェクトブラウザで「SlideShowTransition」を検索すると、いくつかのオブジェクトにSlideShowTransitionプロパティが存在していることがわかります。
この中から、今回のマクロではSlideオブジェクトのSlideShowTransitionプロパティを利用するのが簡単そうという判断をして、ご紹介したようなマクロにしました。この判断ができるようになるにはPowerPointマクロの経験が、ある程度必要になります。
どうやってその経験値を上げるかですが、結局は基礎知識を得たあとに、日々トレーニングするしかないと考えています。
オブジェクト式を見たときに、ヘルプで調べたり、そのオブジェクト式がどんなオブジェクトを取得しているのかを推測する癖をつけていくと、少しずつ経験値が上がり、判断できるようになっていくはずです。
- Newer:オブジェクトを印刷する設定のバージョンによる違い
- Older:マクロ関連書籍の内容が頭に入ってくるようになった
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Slide・スライド » 非表示スライドを一括削除するPowerPointマクロ