前回の記事の続き。
前回同様、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のスライドを実際に編集する方法を書いていく。