Compartilhar via


【VSTO】アプリケーションレベルでの実装

こんにちは、こだかです。

今回はVSTOのアプリケーションレベルでの実装をご紹介します。
アプリケーションレベルの実装は、WordならWordに、ExcelならExcelに機能を追加するものになり、
ドキュメントレベルの実装とは異なり、個々のドキュメントとは直接関連しません。
したがって、アドインからドキュメントにアクセスする場合は注意が必要です。
一例としては、

private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
        {
            Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)Globals.ThisAddIn.Application.Selection;
            range.Value2 = monthCalendar1.SelectionRange.Start.ToShortDateString();
        }

このソースは、アプリケーションレベルのタスクペイン(=カスタムタスクペイン)上にあるカレンダーコントロールのイベントですが、この例のように、選択されているセルに対して値をセットする等の方法をとります。
注意しなければならないのは、WordのようなSDIアプリケーションとExcelのようなMDIアプリケーションが存在する為、
対象としているドキュメントの有無などを考慮する必要がある点です。

もうひとつの実装方法は、データをバインドする場合の使用です。
たとえば、OpenXMLによる実装を行った場合、ドキュメント内部のCustomXMLに対してデータをセットすることで、
Officeドキュメントと実データを分離することができるようになります。
いわば疑似MVCのようなアプリケーションの形態ですね。要するにスキンのような実装と考えてみると分かりやすいかもしれません。
具体的な実装例は以下をご覧ください。昨年の情報ですが、非常に参考になります。

2007 Office system システム開発 (前編)(Webcast)
https://www.microsoft.com/japan/seminar/vistaoffice12betaex/part3/play.aspx
松崎 剛 ブログ
https://blogs.msdn.com/tsmatsuz/archive/2006/07/22/beta-experience-2006-07-25.aspx

こだかたろう