(PowerPointで作業を始める前に構成を考えなさい派の人には叱られそうではありますが)セクションを利用したプレゼンテーションで構成を考え直していると、スライドの存在しないセクションができてしまう場合があります。
そんなときに、使えるパワポマクロを作りました。スライドが1枚もないセクションを削除するマクロです。
スライドのないセクションを削除するサンプル
以下のSubプロシージャで、アクティブなプレゼンテーションから、スライドのないセクションを削除できます。
With ActivePresentation.SectionProperties
Dim i As Long
For i = .Count To 1 Step -1
If .SlidesCount(i) = 0 Then
.Delete sectionIndex:=i, deleteSlides:=True
End If
Next
End With
End Sub
サンプルマクロで行っている処理
削除系のFor~Next文ですから「Step -1」を指定して、後ろから前にループ処理を行います。
With ActivePresentation.SectionProperties
Dim i As Long
For i = .Count To 1 Step -1
SectionProperties.SlidesCountメソッドで取得したセクションに含まれるスライドの数が0だったときに、
If .SlidesCount(i) = 0 Then
そのセクションをSectionProperties.Deleteメソッドで削除しています。
.Delete sectionIndex:=i, deleteSlides:=True
SectionPropertiesオブジェクトはコレクションではない
SectionPropertiesオブジェクトはコレクションではなく、SectionPropety的なオブジェクトもありません。
拙著『いちばんやさしいPowerPoint VBAの教本』で解説している、
PresentationsコレクションとPresentationオブジェクト
SlidesコレクションとSlideオブジェクト
ShapesコレクションとShapeオブジェクト
のような関係になっていません。
ですから、VBAの世界でよく見かけるDeleteメソッドとは、かなり異なった使い方をします。
もしも、SectionPropertiesオブジェクトがコレクションであったならば、
With ActivePresentation.SectionProperties
.Item(i).Delete
といったコードにできたはずですが、そうではないため上記のようなコードにする必要があります。
VBAでよく見かけるコレクションと、コレクションに含まれる単独のオブジェクトとの関係に慣れている人ほど、注意が必要に感じます。
最終更新日時:2020-08-17 20:27
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » セクション » スライドの存在しないセクションを削除するパワポマクロ