Home » パワーポイントマクロ・PowerPoint VBAの使い方 » セクション » スライドの存在しないセクションを削除するパワポマクロ

スライドの存在しないセクションを削除するパワポマクロ

動作検証バージョン:64bit Windows 10 Pro + 32bit PowerPoint(バージョン2006 ビルド13029.20308 Microsoft Store)

(PowerPointで作業を始める前に構成を考えなさい派の人には叱られそうではありますが)セクションを利用したプレゼンテーションで構成を考え直していると、スライドの存在しないセクションができてしまう場合があります。

そんなときに、使えるパワポマクロを作りました。スライドが1枚もないセクションを削除するマクロです。

[スポンサードリンク]

スライドのないセクションを削除するサンプル

以下のSubプロシージャで、アクティブなプレゼンテーションから、スライドのないセクションを削除できます。

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の使い方 » セクション » スライドの存在しないセクションを削除するパワポマクロ

「セクション」の記事一覧

検索


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

.