持ちます。ただし「全部が同じ表現」ではなく、だいたい次の3系統に分かれます。
1) PowerPointネイティブ図形(四角、矢印、テキストボックス等)
-
スライド内の shape tree に入る
-
形状、座標、塗り、線、テキストなどが DrawingML(XML) で記述される
→ つまり “PPT内部表現そのもの” がある、ということです。
2) 画像として貼られた図(PNG/JPG/SVG等)
-
スライドXMLには「ここに画像を置く」という参照(blip)が入り
-
実体は
ppt/media/に格納される(PNG/JPG/SVGなど) -
スライドは relationship(rId)でメディアを参照する
→ “内部表現”は 画像ファイル+参照です。
3) “オブジェクト挿入”系(Excel表、OLE、ActiveX等)
ここがご質問の核心に近いです。
-
PowerPoint側には「埋め込みオブジェクトをここに置く」という OleObject要素(XML) があり、そこに relationship id が入ります。
-
実体データは別パーツとしてパッケージ内に入り、PowerPointはそれを参照します(OLE埋め込みの作法)。
-
Open XML SDK上でも
OleObject/OleObjectEmbedのようにクラス化されており、XMLにシリアライズされることが明示されています。
要するに:
-
“箱(配置・サイズ・参照)”はPPTのXML(PresentationML/DrawingML)
-
“中身(Excelやバイナリ等)”は埋め込みパーツ(embedded part)
という二重構造です。
実務的な「内部表現としての正解」まとめ(PPT最終前提)
-
編集可能な図にしたい:PowerPointネイティブ図形(DrawingML)か、SVG/EMFを分解して図形化
-
見た目固定で良い:画像(PNGなど)として保持(内部表現は参照+media実体)
-
Excel等を“埋め込みオブジェクト”として残す:OLE(内部は「PPT側の枠XML」+「埋め込みパーツ」)