スライドが 20 枚、30 枚と増えてくると、どこに何があるのか分かりにくくなります。セクション は、スライドを「導入」「本編」「質疑応答」のように意味のあるまとまりへ区分けするための仕組みで、PowerPoint のスライド一覧では折りたたみ可能なグループとして表示されます。大きな資料を扱うときほど、構成を保つ効果は大きくなります。
本記事では、Spire.Presentation for Python を使用して Python で PowerPoint にセクションを追加・削除する方法 を解説します。
クイックナビゲーション
- Spire.Presentation for Python のインストール
- セクションを扱う前に知っておきたいこと
- プレゼンテーションの末尾にセクションを追加する
- 指定したセクションの前にセクションを挿入する
- 指定したスライドの前にセクションを追加する
- セクションを削除する
- API 早見表
- まとめ
- FAQ
Spire.Presentation for Python のインストール
本記事のコードは Spire.Presentation for Python と plum-dispatch v1.7.4 を使用します。pip コマンドでインストールしてください。
pip install Spire.Presentation
スクリプト側では次の 2 行をインポートします。
from spire.presentation.common import *
from spire.presentation import *
手動でインストールする場合は、Spire.Presentation for Python のダウンロードページ からパッケージを取得できます。
セクションを扱う前に知っておきたいこと
コードを書く前に、押さえておきたい挙動が 3 つあります。いずれも実際に動かして確認したものです。
- 既存スライドは自動的に既定のセクションへまとめられる — セクションが 1 つもないプレゼンテーションで
Append()やAdd()を呼び出すと、既存のスライドを格納するための既定のセクションが自動的に作成され、そのうえで新しいセクションが追加されます。つまり最初の 1 回は、セクション数が 0 から 1 増えるのではなく 2 になります。既定のセクション名はライブラリ側の既定値になるため、Section.Nameプロパティで日本語の名前に変更しておくと資料として自然な見栄えになります。 Insert()はセクションが存在しないと失敗する — セクションが 1 つもない状態でSectionList.Insert()を呼び出すと、挿入位置のインデックスが範囲外となり例外(Arg_IndexOutOfRangeException)が発生します。「指定したセクションの前に挿入する」操作は、あらかじめセクションが作られているプレゼンテーションに対して行ってください。- セクションを削除してもスライドは消えない — セクションはスライドの区分け情報であり、スライドそのものではありません。セクションを削除すると、そのセクションに含まれていたスライドは前のセクションへ統合されます。スライドの枚数が変わることはありません。
プレゼンテーションの末尾にセクションを追加する
末尾に追加するには Presentation.SectionList.Append(section_name) メソッドを使います。引数にはセクション名を渡します。
from spire.presentation.common import *
from spire.presentation import *
# Presentation オブジェクトを作成
presentation = Presentation()
# PowerPoint プレゼンテーションを読み込む
presentation.LoadFromFile("Sample.pptx")
# 末尾に新しいセクションを追加
presentation.SectionList.Append("新しいセクション")
# 自動作成された既定のセクションの名前を変更
presentation.SectionList[0].Name = "既定のセクション"
# 結果を .pptx ファイルとして保存
presentation.SaveToFile("AddSection.pptx", FileFormat.Pptx2013)
presentation.Dispose()

Append() で追加したセクションはスライドを 1 枚も含まない空の状態です。スライド一覧では、それまでのスライドが「既定のセクション」にまとまり、その下に空のセクションが並びます。セクションにスライドを追加する場合は Section.Insert(index, slide) などのメソッドを使用します。ただしこの操作は指定した位置にスライドを新規挿入するものであり、既存スライドの所属を付け替えるものではありません(実際に 10 枚のスライドに対して実行すると、11 枚目が追加されました)。
指定したセクションの前にセクションを挿入する
任意の位置に差し込みたい場合は Presentation.SectionList.Insert(index, section_name) メソッドを使います。第 1 引数が挿入位置、第 2 引数がセクション名です。
from spire.presentation.common import *
from spire.presentation import *
# Presentation オブジェクトを作成
presentation = Presentation()
# セクションを含むプレゼンテーションを読み込む
presentation.LoadFromFile("AddSection.pptx")
# 2 番目のセクションの前に新しいセクションを挿入
presentation.SectionList.Insert(1, "挿入したセクション")
# 結果を .pptx ファイルとして保存
presentation.SaveToFile("InsertSection.pptx", FileFormat.Pptx2013)
presentation.Dispose()

上のコードは、前のセクションで作成した AddSection.pptx(セクションを 2 つ含む)を読み込んでいます。第 1 引数の 1 は 0 始まりの位置なので、既存の 2 番目のセクションの直前に新しいセクションが入ります。先に触れたとおり、セクションが 1 つもないプレゼンテーションに対してこの操作を行うと例外になるため、対象ファイルのセクション数を確認してから実行してください。
指定したスライドの前にセクションを追加する
スライドの位置を基準にしたい場合は Presentation.SectionList.Add(section_name, slide) メソッドを使います。区切りを入れたいスライドをそのまま渡せるため、「3 枚目のスライドから新しいセクションにしたい」といった指定が直感的に行えます。
from spire.presentation.common import *
from spire.presentation import *
# Presentation オブジェクトを作成
presentation = Presentation()
# PowerPoint プレゼンテーションを読み込む
presentation.LoadFromFile("Sample.pptx")
# 2 番目のスライドを取得
slide = presentation.Slides[1]
# 2 番目のスライドの位置に新しいセクションを追加
presentation.SectionList.Add("新しいセクション", slide)
# 自動作成された既定のセクションの名前を変更
presentation.SectionList[0].Name = "既定のセクション"
# 結果を .pptx ファイルとして保存
presentation.SaveToFile("AddSectionBeforeSlide.pptx", FileFormat.Pptx2013)
presentation.Dispose()

この操作では、渡したスライド以降のスライドがまとめて新しいセクションに属するようになります。10 枚のスライドで 2 番目(インデックス 1)を指定した場合、前半 1 枚が既定のセクション、残りの 9 枚が新しいセクションに振り分けられました。区切りの位置を変えたいときは、渡すスライドを変えるだけで調整できます。なお、この方法は .pptx / .potx 形式のファイルでのみ機能します。
セクションを削除する
不要になったセクションは Presentation.SectionList.RemoveAt(index_to_remove) メソッドで削除します。位置を指定して 1 つずつ削除する方法と、Presentation.SectionList.RemoveAll() メソッドですべてのセクションをまとめて削除する方法があります。
from spire.presentation.common import *
from spire.presentation import *
# Presentation オブジェクトを作成
presentation = Presentation()
# セクションを含むプレゼンテーションを読み込む
presentation.LoadFromFile("InsertSection.pptx")
# 2 番目のセクションを削除
presentation.SectionList.RemoveAt(1)
# すべてのセクションを削除する場合は次の 1 行を使う
# presentation.SectionList.RemoveAll()
# 結果を .pptx ファイルとして保存
presentation.SaveToFile("RemoveSection.pptx", FileFormat.Pptx2013)
presentation.Dispose()
セクションを削除してもスライドは削除されません。実際に確認したところ、10 枚のスライドを持つプレゼンテーションからセクションを削除しても、スライドは 10 枚のままでした。RemoveAll() を実行した場合も同様で、スライドはそのまま残り、セクションの区分け情報だけがファイルから取り除かれます。
API 早見表
本記事で使用したメソッドをまとめます。
| 目的 | メソッド | 補足 |
|---|---|---|
| 末尾にセクションを追加 | SectionList.Append(name) |
セクションが未作成の場合は既定のセクションが自動作成される |
| 指定位置にセクションを挿入 | SectionList.Insert(index, name) |
セクションが 1 つもない状態で呼ぶと例外になる |
| 指定したスライドの位置に追加 | SectionList.Add(name, slide) |
渡したスライド以降が新しいセクションに属する |
| セクションを 1 つ削除 | SectionList.RemoveAt(index) |
スライドは削除されない |
| すべてのセクションを削除 | SectionList.RemoveAll() |
スライドは削除されない |
| セクション名を変更 | Section.Name |
自動生成された既定のセクション名の変更にも使える |
まとめ
本記事では、Spire.Presentation for Python を使用して Python で PowerPoint にセクションを追加・削除する方法 を解説しました。セクションの操作は Presentation.SectionList に集約されており、末尾への追加は Append()、任意の位置への差し込みは Insert()、スライドの位置を基準にする場合は Add() を使います。削除は RemoveAt() または RemoveAll() です。
特に押さえておきたいのは、セクションが未作成のプレゼンテーションでは既定のセクションが自動的に用意されるという点と、セクションの削除がスライドの削除を意味しないという点です。この 2 つを理解しておけば、既存資料への後付けの区分けや、テンプレート生成時のセクション構成の自動化を安心して進められます。
Spire.Presentation for Python の全機能を評価したい場合は、30 日間の無料ライセンスを申請できます。
FAQ
セクションを削除するとスライドも削除されますか?
いいえ。セクションはスライドの区分け情報であり、削除してもスライドは残ります。削除されたセクションに含まれていたスライドは、前のセクションへ統合されます。
セクションを 1 つも持たないプレゼンテーションにセクションを追加するとどうなりますか?
Append() や Add() を呼び出した時点で、既存のスライドをまとめるための既定のセクションが自動的に作成されます。そのため、セクション数は 0 から 1 ではなく 2 になります。既定のセクション名は Section.Name プロパティで変更できます。
指定したセクションの前に挿入しようとすると例外が出ます。
セクションが 1 つもない状態で Insert() を呼び出すと、挿入位置が範囲外となり Arg_IndexOutOfRangeException が発生します。先に Append() などでセクションを作成してから実行してください。
特定のセクションにスライドを割り当てるにはどうすればよいですか?
SectionList.InsertSlide(section, index, slide) または Section.Insert(index, slide) を使用すると、指定したセクションの位置にスライドを挿入できます。なお、これらのメソッドはスライドを新規に挿入するもので、プレゼンテーションのスライド枚数が 1 枚増えます。所属を変えたいだけの場合は、SectionList.Add(name, slide) でスライドの位置を基準に区切りを入れ直す方法が簡単です。
PowerPoint をインストールせずにセクションを操作できますか?
はい。Spire.Presentation はスタンドアロンのライブラリであり、Microsoft Office や PowerPoint をインストールする必要はありません。






