OLE オブジェクトと ActiveX コントロール

OLE オブジェクトと ActiveX コントロール

OLE オブジェクトと ActiveX コントロール

Aspose.Words FOSS for .NET は、OleFormat エントリポイントと Aspose.Words.Drawing および Aspose.Words.Drawing.Ole の関連クラスを通じて、埋め込み OLE オブジェクトおよび Forms 2.0 ActiveX コントロールへの読み取りアクセスを提供します。


埋め込み OLE オブジェクト データへのアクセス

OleFormat は埋め込み Shape によって公開され、埋め込みオブジェクトの生データとメタデータへのアクセスを提供します。SuggestedFileName と SuggestedExtension は埋め込みオブジェクトがどのように保存されるかを説明し、ProgId はそれを作成した OLE サーバーアプリケーションを特定し、IsLink はリンクオブジェクト(SourceFullName/SourceItem が外部ソースを指す)と完全に埋め込まれたオブジェクトを区別します。GetOleEntry(oleEntryName) は OLE 複合ファイル構造から特定の名前付きストリームを読み取り、GetRawData() は完全な生オブジェクトデータを返し、Save(fileName) / Save(stream) は埋め込みオブジェクトのネイティブデータをディスクまたはストリームへ書き出します — これにより、元の埋め込みファイル(たとえば埋め込みスプレッドシートやプレゼンテーション)をネイティブアプリケーションで開かずに抽出することが可能です。OlePackage は OleFormat.OlePackage を介して到達し、OLE パッケージとして埋め込まれたオブジェクトの FileName と DisplayName を公開します。


Forms 2.0 ActiveX コントロールの操作

埋め込みオブジェクトが Microsoft Forms 2.0 ActiveX コントロール(チェックボックス、テキストボックス、コンボボックスなどのインタラクティブコントロールで、埋め込みドキュメントではありません)である場合、OleFormat.OleControl は OleControl を返します。その IsForms2OleControl プロパティを確認し、true であれば、Forms2OleControl(すべての Forms 2.0 コントロールの抽象基底クラス)にキャストして、コントロール固有のプロパティ Caption、Value、Enabled、Type(Forms2OleControlType 値 — CheckBox、Textbox、ComboBox、OptionButton、ListBox、CommandButton など)や、視覚的プロパティ ForeColor、BackColor、Width、Height にアクセスできます。フレームなどのコンテナコントロールは、ChildNodes(Forms2OleControlCollection)を通じてネストされたコントロールを公開します。


ヒントとベストプラクティス

  • ローカルに埋め込みオブジェクトデータが存在すると想定する前に OleFormat.IsLink を確認してください — リンクされたオブジェクトは SourceFullName を介して外部ファイルを参照し、内容を埋め込んでいません。
  • 埋め込みオブジェクトを一括抽出する際に、意味のある出力ファイル名を再構築するために SuggestedExtension と Save() を組み合わせて使用します。
  • キャストして Forms2OleControl に変換する前に必ず OleControl.IsForms2OleControl を確認してください — すべての OleControl が Forms 2.0 コントロールというわけではありません。
  • Forms2OleControlCollection.Count と GetEnumerator() による列挙を使用すると、フレームやマルチページコンテナコントロール内の入れ子になったコントロールを巡回できます。

一般的な問題

問題原因修正
GetRawData() が予期しない/空のデータを返しますオブジェクトはリンク (IsLink == true) であり、埋め込まれていませんまず IsLink を確認してください;リンクされたオブジェクトの SourceFullName を解決してください
InvalidCastException が OleControl を Forms2OleControl にキャストしていますコントロールは Forms 2.0 のコントロールではありませんキャストする前に IsForms2OleControl をチェックしてください
GetOleEntry() は名前付きストリームに対して null を返しますこのオブジェクトのコンパウンド ファイル構造にストリーム名は存在しません固定名を想定せず、実際のエントリ名を列挙してください
フレーム内のネストされたコントロールが見つかりませんトップレベルの OleControl のみをチェックし、ChildNodes はチェックしていませんコンテナコントロールのために Forms2OleControl.ChildNodes に再帰処理します

FAQ

Word 文書から埋め込みの Excel または PowerPoint オブジェクトを抽出するにはどうすればよいですか?

シェイプの OleFormat にアクセスし、次に Save(fileName) または GetRawData() を呼び出して埋め込みオブジェクトのネイティブバイトを取得します。SuggestedExtension を使用して出力ファイルに適切な名前を付けてください。

埋め込み OLE オブジェクトと Forms 2.0 コントロールの違いは何ですか?

埋め込み OLE オブジェクト(OleFormat を直接介してアクセス)は通常、別のドキュメント(スプレッドシート、プレゼンテーション)です。Forms 2.0 コントロール(OleFormat.OleControl → Forms2OleControl)は、チェックボックスやテキストボックスのようなインタラクティブな UI 要素です。

OLE オブジェクトが埋め込みではなくリンクされているかどうかはどうやって判断できますか?

OleFormat.IsLink を確認してください — true のとき、SourceFullName と SourceItem がオブジェクト自身のデータを保持せず、外部ソースを示しています。

チェックボックスコントロールのキャプションまたは値を取得できますか?

はい — IsForms2OleControl を確認した後、OleControl を Forms2OleControl にキャストし、Caption と Value を読み取ります。


API Reference の概要

クラス / メソッド説明
OleFormat埋め込み OLE オブジェクトのデータとメタデータのエントリ ポイント
OleFormat.GetRawData()埋め込みオブジェクトの生バイト列を取得する
OleFormat.Save()埋め込みオブジェクトのネイティブデータをファイルまたはストリームに保存する
OlePackageOLE パッケージオブジェクトのファイル名/表示名
OleControl埋め込みActiveXコントロールの基本表現
Forms2OleControlMicrosoft Forms 2.0 コントロール(チェックボックス、テキストボックス、コンボボックスなど)
Forms2OleControlCollection子Forms2OleControlノードのコレクション(例:フレーム内)
Forms2OleControlTypeForms 2.0 コントロール種別の列挙型

参照

 日本語