Share via


Word 2007におけるアドイン開発

こんにちは、こだかです。
前回に引き続き、Visual Studio 2008 Ready Dayで紹介したデモのフォローを行います。
前回のポストで、使用するファイルフォーマットが出来ました。今回は、そのファイルを使用するWordアドインを作成します。

まず、Visual Studio 2008を起動して、Word2007アドインを新規作成します。

UIを作成したいので、ユーザーコントロールを一つ追加します。
テキストボックスとボタンを配置しましょう。

 

ボタンのクリックイベントに以下をプログラムします。
前回CustomXMLの作成で指定した名前空間(https://schemas.microsoft.com/vsto/demo)が確認できると思います。
この名前空間のある、XMLに対しての更新を行います。

    using Office = Microsoft.Office.Core;
        private void button1_Click(object sender, EventArgs e)
        {
            //カスタムXMLへのデータ更新
            const string prefix = "https://schemas.microsoft.com/vsto/demo";

            Office.CustomXMLPart expData;
            Office.CustomXMLParts docParts = Globals.ThisAddIn.Application.ActiveDocument.CustomXMLParts.SelectByNamespace(prefix);

            if (docParts.Count > 0)
            {
                expData = docParts[1];
                expData.NamespaceManager.AddNamespace("c", prefix);
                expData.SelectSingleNode("c:Products/c:Product/c:name").Text = textBox1.Text;
            }
        }

ThisAddIn.csのStartupイベントに以下を記述して、ユーザーコントロールをカスタムタスクペインとして追加します。

        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            UserControl1 myControl = new UserControl1();
            Microsoft.Office.Tools.CustomTaskPane myTaskPane = this.CustomTaskPanes.Add(myControl, "Demo");
            myTaskPane.Visible = true;
        }

ビルドした後、前回のファイルをWordで起動してみましょう。
画面にある値=CustomXMLの更新が可能になりました。

このアドインは、Wordファイルと言いつつも、CustomXMLに対しての更新を行っていますので、Wordドキュメントの書式変更に対しては、実行が保証されます。
例えば、申請書などを想像してみてください。書式の変更は、結構な頻度で発生する可能性がありますが、
このようなアプリケーションのモデルは、そうした拡張に強いシステム開発を可能にします。
つまり、モデル(データ)とビュー(見た目)を分離する目的で 特定のドキュメントの拡張ではなく、アプリケーションレベルのアドインを作成するわけです。
(当然ながら、従来のように特定のファイルに対して機能拡張を行うモデルでの開発も可能です)
2007 Office System時代のOffice開発が、コンポジットモデルである理由の一つがここにあると言えます。
こうしたファイルは、Share Point Serverのドキュメントテンプレートにしても良いでしょうし、このアドインの内部から基幹システムのDBを更新しても良いと思います。
Officeアプリケーションをゆるく組み合わせてシステム化を図れるということになります。
また、このアドインはアプリケーションレベルに配置されますから、必要ではない場合、画面の表示は抑制したいですよね。
そうした場合の考慮(例えばリボンを使用してカスタムタスクペインの表示を制御する)や、アドインを展開する為、ClickOnceの使用などもシナリオに考えられるでしょう。

Visual Studio 2008 Ready Day で行った、クライアントサイドにおけるOffice開発は以上がポイントになります。

今回作成したデモはここからダウンロード可能です。
このデモは、価格.comWebサービス(https://apiblog.kakaku.com/KakakuItemSearchV1.0.html)を使用した購入申請書もどきを作成するものです。
WPFコントロールなども使用して、ちょっと楽しいUIになっていますので、ご興味のある方は確認してみてください。
検索ボックスにマイクロソフトなどと適当なキーワードを入れると結果が表示されます。

こだかたろう