komeの備忘録

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

C#でPowerPointを開く

前回の記事の続き。

komee.hatenablog.com


前回同様、2つのコンポーネントを参照に追加し、プロジェクトにインポートする。


C#プログラムから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);

/*
PowerPointへの何らかの操作をここに記述
*/

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

解説

1行目
(using PPt = Microsoft.Office.Interop.PowerPoint;)

前回紹介したMicrosoft.Office.Interop.PowerPoint をusingにしていしつつ、PPtという変数へ代入する。
こうすることで、プログラム中でこのコンポーネントを呼び出すときはPPt.~と省略した形で書くことができる。

4行目
string pptxPath = @"C\sample.pptx";

今回開くPowerPointのファイルへのパスを記述する。
文字列中にエスケープ文字(\)が出てくるため、ダブルクォーテーションの前に@をつけることに注意。

5-7行目
var app = new PPt.Application();
var pres = app.Presentations;
var file = pres.Open(targetPptx, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);

ルーティン。このように書いたらPowerPointを開くことができた。
7行目のpres.Openの引数は以下のようになっている。

  • 第1引数: 今回開くファイルへのパス(string)
  • 第2引数: ReadOnly。読み込み専用で開くなら、Trueを指定。(MsoTriState)
  • 第3引数: Untitled。ファイルにタイトルがあるかないかを指定。Trueだとファイル名なしでオープンする。Falseにした場合、既にタイトルはあるものとしてオープンする。(MsoTriState)
  • 第4引数: WithWindow。描画をするかしないか。Trueにすると描画をしつつ実行する。Falseを指定すると描画なしで実行される。(MsoTriState)
13-14行目
file.Save();
file.Close();

ルーティン。開いたファイルを保存して閉じている。

Saveをしないで閉じると、ファイルは保存されない。

またCloseをしないでプログラムを終了すると、開いていたPowerPointのファイルはロックされたままになり、再度オープンできなくなる。

ちなみにCloseを書き忘れた場合はプログラムが終了した後に、そのファイルを普通に開いて、"保存して"閉じればその後も問題なく使える。
# そんなことするなら普通にプログラム中にCloseを書いた方がいいのは言うまでもないが。


以上、C#からPowerPointを開く方法を記載した。

次回以降はPowerPointのスライドを実際に編集する方法を書いていく。

(C) komee.org