Microsoft Office 製品を Windows のプラットフォーム上で別アプリケーションから操作する場合のテクノロジについて

※ この記事は以下の Office サポート フォーラムに移行しました。 https://social.msdn.microsoft.com/Forums/ja-JP/0b68be04-30fa-4c6f-8abe-48a188601b81/microsoft-office-windows-

 

こんにちは、Office 開発系サポートの柴田 茂 (sshibata) です。
私の投稿では、Microsoft Office 製品を、Windows のプラットフォーム上で別アプリケーションから操作する場合にどんなテクノロジを検討すべきかというテーマについて記載致します。

.NET Framework が登場するはるか前の時代から、Windows 上で動作するOffice アプリケーションに介入してアプリケーションソフト間でデータを転送・共有するための仕組みは存在していました。それが、OLE と呼ばれる規格(Object Linking and Embedding) であったり、DDE というテクノロジであったり(Dynamic Data Exchange)、ファイルを含めたデータソースへのアクセスを目的としたCOM のセットである、ActiveX Data Objects (ADO)であったりしました。

これらのテクノロジは、マイナーバージョンアップを繰り返しながら、あるいは、.NET Framework に対応できるようにインターフェースが内部的にラップされる等の経緯を経て進化を続けています。 さらに、Office 用のプライマリ相互運用機能アセンブリ (Office PIA) と呼ばれる Office オブジェクトを外部に公開したインターフェース経由でのデータアクセスや、Open XML 準拠のOffice ファイルに対するアクセスが登場してきているのが現在の状況です。そして、今後急速にCloud 化の大きなうねりに伴った新技術が公開されてくることでしょう。

ただし、全ての会社が最新の流行に乗って社内IT 環境を整えられるわけでもありませんし、今まで運用・作成してきた情報資産の有効活用も大きな課題となることは想像に難くありません。私も現在の仕事を通して、お客様(現場の担当者様)が色々と創意工夫をしながら、よりよいIT 環境を提供しようと日々模索していることに、大きな刺激を受けています。

前置きが少し長くなりましたが、私の連載においては、Office アプリケーションで作成されたファイルをコード上から操作するテクノロジについて整理する予定です。
既にご存知の方も多いとは思いますが、Office を操作するためには、主に以下の技術を利用することができます。

   1. Office PIA 経由で、Office 製品をオートメーションすることによる、Office オブジェクトモデルの操作

  2. レイトバインディングによる、Office オブジェクトモデルの操作

  3. OLEDB (Object Linking and Embedding DataBase) 経由でのファイル操作

  4. Open XML準拠ファイルの操作

この他にも例えば、DDE でのOffice ファイル操作/データ転送や他のテクノロジや、ファイルを開いた状態で、RealTimeData (RTD)から、COM サーバーを呼び出すことでのデータアクセス、.NET Remoting等(いわゆるプロセス間通信の一つ)も存在しますが、利用シナリオがかなり限定されますので、本稿では割愛します。さて、それぞれどのような特徴を持つのでしょうか。次の投稿では、1. のOffice PIA 経由で Office 製品をオートメーションすることによる、Office オブジェクトモデルの操作について紹介していきましょう。