チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.XLS for .NET»文書操作»C# で Excel ファイルを作成・出力する方法(.NET / ASP.NET 対応)
2026-11-13

Python で PowerPoint のスライドをコピーする方法:同じファイル内での複製と別ファイルへの挿入

PowerPoint プレゼンテーション内、または複数の PowerPoint プレゼンテーション間でスライドをコピーする

定例報告書や提案資料を作成するとき、既存のスライドを再利用すれば、内容やレイアウトを一から作り直す手間を減らせます。同じ資料の中でスライドを複製する場合もあれば、別の資料から必要なスライドだけを取り込む場合もあります。

この記事では、Spire.Presentation for Python を使用して、この2つの操作を実装します。コピー先の末尾に追加する方法と、指定した位置に挿入する方法を、それぞれコードで確認します。

目次

1. ライブラリのインストールとファイルの準備

Spire.Presentation for Python は、Python から PowerPoint ファイルの読み込み、編集、保存などを行うためのライブラリです。今回は、スライドを操作する機能を使用します。

次のコマンドでインストールします。

pip install Spire.Presentation

または、Spire.Presentation for Python のダウンロードページ から手動でライブラリをインストールすることもできます。

サンプルを実行する前に、次のファイルをスクリプトの作業ディレクトリに用意してください。別の場所に保存している場合は、コード内のパスを変更します。

ファイル名 用途 必要なスライド数
Input1.pptx コピー元のプレゼンテーション 例1では1枚以上、例2では3枚以上
Input2.pptx 例2のコピー先プレゼンテーション 1枚以上

なお、コードで指定するスライドのインデックスは 0から始まります。Slides[0] は1枚目、Slides[1] は2枚目です。挿入位置も同じ考え方で指定します。

2. 同じ PowerPoint ファイル内でスライドを複製する

まず、Input1.pptx の1枚目を複製し、同じプレゼンテーションの末尾と3番目の位置に追加します。

使用するメソッドは次の2つです。

メソッド 処理
Slides.AppendBySlide(slide) 指定したスライドのコピーを末尾に追加する
Slides.Insert(index, slide) 指定した位置にスライドのコピーを挿入する
from spire.presentation.common import *
from spire.presentation import *

# 入出力ファイルのパス
input_file = "Input1.pptx"
output_file = "CloneSlidesWithinTheSame.pptx"

# プレゼンテーションを読み込む
ppt = Presentation()
ppt.LoadFromFile(input_file)

# 1枚目のスライドを取得する
slide = ppt.Slides[0]

# スライドのコピーを末尾に追加する
ppt.Slides.AppendBySlide(slide)

# スライドのコピーを3番目の位置に挿入する
ppt.Slides.Insert(2, slide)

# 結果を別ファイルに保存する
ppt.SaveToFile(output_file, FileFormat.Pptx2016)
ppt.Dispose()

コードのポイント

Slides[0] でコピー元のスライドを取得し、AppendBySlide() で末尾にコピーを追加しています。その後、Insert(2, slide) で、もう1枚のコピーを3番目の位置に挿入します。

挿入位置にあったスライド以降は後ろにずれます。たとえば、元のスライドが「A、B、C、D」の4枚なら、実行後の並びは「A、B、Aのコピー、C、D、Aのコピー」になります。

この例ではスライドが合計2枚増えます。結果は新しいファイルに保存するため、元の Input1.pptx は上書きされません。

同じ PowerPoint ファイル内でスライドを複製する

3. 別の PowerPoint ファイルにスライドをコピーする

次に、Input1.pptx の2枚目と3枚目を、Input2.pptx にコピーします。2枚目のスライドはコピー先の2番目に挿入し、3枚目のスライドはコピー先の末尾に追加します。

from spire.presentation.common import *
from spire.presentation import *

# 入出力ファイルのパス
source_file = "Input1.pptx"
destination_file = "Input2.pptx"
output_file = "CloneSlidesToAnother.pptx"

# コピー元のプレゼンテーションを読み込む
source_ppt = Presentation()
source_ppt.LoadFromFile(source_file)

# コピー先のプレゼンテーションを読み込む
destination_ppt = Presentation()
destination_ppt.LoadFromFile(destination_file)

# コピー元の2枚目と3枚目を取得する
slide1 = source_ppt.Slides[1]
slide2 = source_ppt.Slides[2]

# 2枚目のコピーを、コピー先の2番目の位置に挿入する
destination_ppt.Slides.Insert(1, slide1)

# 3枚目のコピーを、コピー先の末尾に追加する
destination_ppt.Slides.AppendBySlide(slide2)

# 結果を別ファイルに保存する
destination_ppt.SaveToFile(output_file, FileFormat.Pptx2016)

# 両方のプレゼンテーションのリソースを解放する
destination_ppt.Dispose()
source_ppt.Dispose()

コードのポイント

別ファイルへコピーする場合は、コピー元とコピー先をそれぞれ別の Presentation オブジェクトとして読み込みます。スライドは source_ppt から取得し、追加や挿入は destination_ppt.Slides に対して行います。

たとえば、コピー元が「A、B、C」、コピー先が「X、Y、Z」の場合、出力ファイルの並びは「X、Bのコピー、Y、Z、Cのコピー」になります。コピー元のスライドは削除されません。

最後に、編集したコピー先を CloneSlidesToAnother.pptx として保存し、両方のオブジェクトに対して Dispose() を呼び出します。

別の PowerPoint ファイルにスライドをコピーする

4. 実装時に確認しておきたい点

スライド番号とインデックスを区別する

画面上の「3枚目」はコードでは Slides[2] です。指定したスライドが存在しない場合は取得できないため、入力ファイルの構成を確認してください。スライド数は ppt.Slides.Count で取得できます。

挿入すると後続のスライドの位置が変わる

同じプレゼンテーションに対して複数回挿入すると、そのたびに後続のスライドのインデックスが変わります。複数の元スライドを複製する場合は、挿入前にコピー元のスライドを取得しておくと、意図した対象を扱いやすくなります。

コピー元とコピー先のスライドサイズを確認する

別ファイルへコピーする場合、コピー元とコピー先で縦横比やスライドサイズが異なることがあります。こうした資料を扱う際は、出力ファイルを開き、文字や図形の配置を確認してください。

まとめ

Spire.Presentation for Python では、AppendBySlide() でスライドのコピーを末尾に追加し、Insert() で指定位置に挿入できます。同じ資料内での複製にも、別の資料からの取り込みにも同じメソッドを使えるため、定型スライドの再利用や用途別の資料作成に活用できます。

無料トライアルライセンスの取得

Spire.Presentation for Python の機能を評価制限なしで体験したい場合は、30 日間無料トライアルライセンス を申請できます。

Read 5 times