午後は、Excelのドキュメントレベルカスタマイズ、アプリケーションレベルカスタマイズ、リボンUIのカスタマイズ、操作ウィンドウ/作業ウィンドウの作成、Outlookフォーム拡張、Click Onceによる配置、SharePoint対応アプリ開発、と盛り沢山でした。
1.Excelのドキュメントレベルカスタマイズ。
ここは、正直目新しいネタはありませんでした。NamedRangeコントロールやListObjectコントロールが使えるという話。ただ、デモの中で、"NamedRange1.value"と"NamedRange1.value2"といった具合に、値を扱うプロパティが2種類あるという話を聞いたのですが、そこがハテナでした。「型が違う」って言っていたなぁ。後ほど調査しようと思います。
とここで、なぜか「Officeソリューションプログラミングモデルの種類」について説明がありました。まとめると次のような感じ。目的や各々の敷居の高さや制限事項などを踏まえて適材適所に使い分けるのが良いようです。
- VSTOプログラミングモデル。後述のOfficeオブジェクトモデルやOpen XMLを直接操作するより、簡単。
- Microsoft Officeオブジェクトモデル。旧来からある、プライマリ相互運用機能アセンブリ(PIA)に対するコードを直接記述するやり方で、Microsoft.Office.Interop.wordのような形で参照クラス設定をしてつかうことになります。
- Open XMLプログラミングモデル。Office2007の標準フォーマットであるOpen XMLに基づくプログラミングで、.NET Framework 3.0よりサポートされている方式になります。こちらは、"\\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\windowsBase.dll"に向かって参照設定をすることで利用可能で、System.IO.Packaging名前空間を使うことになります。
- 上記3項をもっと楽に使えるようにするためのSDKが配布されているらしいです。詳細不明。
2.アプリケーションレベルカスタマイズ
アドインプロジェクトを作成することになります。ThisAddin.vb(ThisAddin.cs)ファイルが自動生成され、AddInクラスから派生したThisAddInクラスが自動生成されます。これが、アプリケーションレベルのアドインのホスト項目ということになります。
あと、Globalsクラス。これはドキュメントレベルのプロジェクトでも使える技ですが、プロジェクト内の任意の場所から、ホスト項目へのアクセスを可能にするクラスです。Windowsフォームやアクションペインなどからホストアプリケーションのホスト項目にアクセスする時に重宝します。
3.リボンUIのカスタマイズ
リボンUIのカスタマイズには、従来からXMLファイルを直接記述する方法がありましたが、あまりに煩雑でした。VS2008からは、リボンデザイナというものが新たに提供され、コントロールをドラッグ&ドロップでリボンUIをビジュアル開発することができるようになりました。
ただ、リボンデザイナによる開発では細かい開発がしきれない部分もあり、その場合は旧来のXMLファイル編集が必要になるとのこと。これを可能にするために、リボンデザイナで作成した成果物をXMLファイルとしてエクスポートすることができるようになっています。(XMLファイルからリボンデザイナへのインポートはできません。)
リボンデザイナ使用上の注意点として、リボンデザイナ上のコントロールのUI上の名称表記は、textプロパティの代わりにlabelプロパティになるという話がありました。統一してほしいところですが、なぜこういう仕様になったんでしょうかね?
あと、リボンデザイナと言いつつ、リボンだけでなく「Officeボタン」(Office2007アプリケーションの左上に配置されている丸いボタン)へのメニュー追加なんかもできるようになっている点も補足しておきます。
4.操作ウィンドウ/作業ウィンドウの作成
そもそも、「操作ウィンドウ/作業ウィンドウ」って解りにくいと思うのは私だけでしょうか?英語では「操作ウィンドウ=CustomActionPane」、「作業ウィンドウ=CustomTaskPane」です。ますます解りにくい?でも英語リソースを参照することが少なくない折、英語名を認識しておくことも重要ですね。
で、「操作ウィンドウ=CumtomActionPane」はドキュメントレベルに対応したウィンドウの開発で、「作業ウィンドウ=CustomTaskPane」はアプリケーションレベルに対応したウィンドウの開発、ということになります。
VSTO3.0では、操作ウィンドウは「Word2003/2007、Excel2003/2007のドキュメントおよびテンプレート」に対する開発が行えます。プロジェクト作成後、新たな項目の追加で、操作ウィンドウコントロールを追加する、ということになります。後は、ThisDocument_Startupイベントハンドラで、操作ウィンドウコントロールを表示するためのコードを記述します。
一方の作業ウィンドウは、「Word2007、Excel2007、PowerPoint2007、Outlook2007、InfoPath2007、Visio2007、Project2007 のアドイン」を作成可能です。アドインプロジェクト作成後、新たな項目の追加で、ユーザーコントロールを追加する、ということになります。後は、ThisAddIn_Startupイベントハンドラで、ユーザーコントロールを表示するためのコードを記述します。
5.Outlookフォーム拡張
Outlook2007では、「フォーム領域」と呼ばれる新しいフォームテクノロジーが導入されています。これを行うには、Outlookアドインプロジェクトを作成の後、「新しい項目の追加」で「Outlookフォーム領域」を追加することになります。するとウィザードが立ち上がって、どのフォームを拡張するのか、またどのように拡張するのか(隣接、分離、置換、すべて置換)を選択できるようになります。
ところで、フォーム拡張に限った話ではありませんが、Outlookのアドイン管理は、WordやExcelと異なるメニューからアドイン管理画面を開くことになる点が要注意という話がありました。「ツール → セキュリティセンター」とメニューをたどることでアドイン管理画面が登場することになります。これは、次期バージョンでは統一を希望したいところですね。
6. Click Once
先代VS2005のWindowsアプリケーションの配布で大いに注目したClick Onceが、VS2008よりVSTOソリューションにも適用できるようになりました。従来のVSTOは利用PC上でのセキュリティ設定が大変で、それが普及の妨げになっているとも感じていましたが、これが使えるならかなり前進ですね。
気を付けなければならないのは、配布するIISサーバ上で、拡張子.vstoファイルをサポートさせるためのMIME設定が必要、ということです。拡張子:.vstoに対して、MIMEの種類:application/octet-streamをあらかじめ設定しておく必要があります。
これは、試してみたいですねぇ。
7.SharePoint対応アプリ
Office SharePoint Designerを用いることによって汎用的/シンプルなワークフローの作成をノンコーディングで行うことができましたが、複雑なワークフローを実装ためのコーディングをVS2008で行えるようになったとのことです。ワークフロー機能そのものには興味ないわけではありませんが、個人的にはココはスルー。
-------------
休暇を取って参加したこのテクニカルトレーニングでしたが、休暇をとった甲斐がありました。一日がとても充実していて、今日得たものを実フィールドで早速使う気持が強く湧いてきました。