komeの備忘録

東大院卒外資ITエンジニアの技術ブログ

C#でPowerPointスライドを編集

C#でPowerPointシリーズ3回目


まだ読んでいない方は前回、前々回の記事をまず読むことをすすめる。
komee.hatenablog.com
komee.hatenablog.com


今回は開いたPowerPointに対して実際にスライドをコピー・移動・削除する方法を書く。

(using PPt = Microsoft.Office.Interop.PowerPoint;)
(using Microsoft.Office.Core;)

string pptxPath = @"C\sample.pptx";
var app = new PPt.Application();
var pres = app.Presentations;
var file = pres.Open(pptxPath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);

// ここから
file.Slides[1].Duplicate();
file.Slides[1].MoveTo(file.Slides.Count);
file.Slides[2].Delete();
// ここまで

file.Save();
file.Close();

前回の記事のコードを流用する。
開いたPowerPointファイルにはすでに1枚のスライドを保持しているとする。
つまり、この時点ではスライドの枚数は1枚のみ。


C#でスライドを編集する場合、どのページを使用するかは、以下のようにfile.Slides[]の引数に入れて指定する。

file.Slides[1].Duplicate();


引数は1から始まるので注意。


  • 複製
file.Slides[1].Duplicate();

Duplicateメソッドを用いる。
コピーするとスライドの配置場所は、コピー元の次のページになる。

この時点でスライドは2ページとなっている。

  • 移動
file.Slides[1].MoveTo(file.Slides.Count);


MoveToメソッドを用いる。
引数としてスライドの何ページ目に移動するかを整数で指定する。

なおページ数のインデックスは1から始まる。プログラマにはわかりにくいが、一般人にはわかりやすくなっている。

今回は引数にfile.Slides.Countを用いてスライドのページ数を取得し、スライドの最後のページに移動するようにした。
この時点でスライドの1ページ目と2ページ目が入れ替わっている。

  • 削除
file.Slides[2].Delete();

Deleteメソッドを用いる。
指定されたページのスライドが削除される。

今回は1ページ目が削除された。



結果として最初と同じ状態になってPowerPointは保存された。




今回はこれらコピー・削除・移動だけで僕は作業していたのだが、ページの新規作成も書いたほうがいいよなぁ、と書きながら思ってしまった。
機会があったら調べることにする。

(C) komee.org