tomizo_no.2目次はじめに雛型ファイル(.pptx)の用意フォームの改造コードの追加スライド内オブジェクトの取得まとめはじめに前回は、お試し的にC#でPowerPointのファイルを開いてスライドを複製してみました。今回は、もう一歩踏み込んで、スライド内のオブジェクト(Shapeなど)を取得してみます。雛型ファイル(.pptx)の用意まずは、前回と同様に雛型ファイルを用意します。今回は、以下のようにいくつかのオブジェクトを適当に配置しました。どんな情報が取得できるかわからないので、とりあえずテキストが設定できるものはテキストを入れておきました。前回作ったフォームを少し改造してみます。今回は、以下のようなフォームにしました。改造点は、フォームサイズを縦長にしたことと、オブジェクトの情報を取得するボタンを追加し、ログ表示領域を大きくしたことです。前回のコードに対して、以下のコードを追加しました。Microsoft.Office.Interop.PowerPoint;を追加しました。これでPowerPointに関する各種のクラスやインターフェース情報をPPt使って参照できます。追加したボタンのイベントのところに、以下のコードを追加しました。MsoTriState.msoFalse);textBox2.AppendText("pptxファイルをオープンしました。1ページ内のShapeについてプロパティ値を取得します。テキストがあるオブジェクトについては、テキストを取得します。cnt++;}file.Close();textBox2.AppendText("ファイルをクローズしました。\n");処理内容としては、1ページめのスライドのすべてのShapeオブジェクトについて、プロパティ値を取得してログ表示領域に出力する、というものです。すべてのコードは、以下のようになります。textBox2.AppendText("pptxファイルをオープンしました。textBox2.AppendText("1ページ目のスライド2ページ目にコピーしました。textBox2.AppendText("ファイルをクローズしました。textBox2.AppendText("pptxファイルをオープンしました。1ページ内のShapeについてプロパティ値を取得します。テキストがあるオブジェクトについては、テキストを取得します。textBox2.AppendText("ファイルをクローズしました。}}スライド内オブジェクトの取得では実際にページ内オブジェクトの取得を行ってみます。実行結果は、以下のようになりました。この出力結果は、以下の通りでした。pptxファイルをオープンしました。Left:562.6583ファイルをクローズしました。各Shapeには、それぞれの形状に応じたAutoShapeTypeが指定されています。Shapeには、下図のように多くの種類がありますが、それぞれ異なるAutoShapeTypeになっていると思います。(全部やっていないので憶測ですが)なお、画像を1枚貼っていましたが、これは「msoShapeRectangle」となっているようです。単なるテキストも同じみたいですね。ここまでで、Shapeの情報取得ができることがわかりました。まとめ今回は、スライド内のオブジェクト(Shapeなど)を取得してみました。ここまでできれば、Shapeをテキストなどで特定してプロパティ値を変更すれば、様々な編集ができるようになりそうですね。次回は、Shapeの属性変更など、実際の編集を行ってみたいと思います。ファイルが含まれていないサイトがあります。