Visual Studio Tools for Officeで作るOfficeアプリケーション
Visual Studio 2008 徹底入門 (9)
ダウンロード サンプルファイル (228.6 KB)
アプリケーションの作成 1
だいぶ前置きが長くなりましたが、ここからは実際にサンプルのアプリケーションを作成する過程を通してVSTOの機能を見ていきます。
ドキュメントレベルのカスタマイズアプリケーションの作成
ドキュメントレベルのカスタマイズアプリケーションを作成するには、VS2008の新規プロジェクトの作成で図1のようにOfficeを選択し、ここからExcel 2007 ブックなどアドインではないテンプレートを選択します。次にVSTOプロジェクトウィザードでひな形にする文書を選択します。
Excelで新規の場合には図4に示す4種類の形式から選択できます。既存のドキュメントを選択する場合でも図4に示す4種類の拡張子のファイルを元にすることができます。
- *.xlsx
- *.xlsm
- *.xlsb
プロジェクトを作成すると以下のようなコードが生成されます(Excel 2007 ブックをC#で作成した場合のThisWorkbook.csクラスの初期コード)。
namespace ExcelWorkbook1 { public partial class ThisWorkbook { private void ThisWorkbook_Startup(object sender, System.EventArgs e) { } private void ThisWorkbook_Shutdown(object sender, System.EventArgs e) { } //VSTO で生成されたコード } }
VBAのコードを記述したことがある方であれば、StartupやShutdownなどにはなじみがあるかと思います。他にもVBAのときに利用できていたイベントのほとんどが利用可能です。
この方法により作成されたExcelシートに対して、コントロールなどを配置し、レイアウトしたものが図3に示すようなものになります。Excelシート上に張り付けたボタンなどはWindowsアプリケーション開発時と同様にダブルクリックすることでデフォルトイベントをコード内に実装できます。
本稿のサンプルとして付けている「DocumentLevel.zip」はこれらの手順を一通り終えた後のものになります(もっともサンプルですのでイベントハンドラの中身はまったく無意味です)。サンプルを実行すると注文票(のようなもの)がデザインされたExcelが立ち上がり、ボタンクリックや数量の変更イベントに応じたアクションが実行されます。
アプリケーションレベルのアドインアプリケーションの作成
アプリケーションレベルのアドインを作成するには、VS2008の新規プロジェクトの作成で図1のようにOfficeを選択し、ここから「Excel 2007 アドイン」など、最後に「アドイン」とつくテンプレートを選択します。ドキュメントレベルのカスタマイズとは違い、アプリケーションレベルのアドインプロジェクトの場合にはウィザードなどは無く、プロジェクトの作成が完了します。この状態ではUIにかかわる部分などもなくThisAddinクラスが生成されるだけです。
public partial class ThisAddIn { private void ThisAddIn_Startup(object sender, System.EventArgs e) { } private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { } //VSTO で生成されたコード }
StartupやShutdownなどのイベントがある点はドキュメントレベルで作成した場合と変わりませんが、こちらはOfficeアプリケーションの開始、終了に反応するイベントです。アプリケーションレベルの場合には、他にさまざまなイベントがあるわけではなく、Officeアプリケーションのメニューや作業ウィンドウを独自に定義して、それらから発生するイベントを処理するというのが一般的な形になります。
リボンの開発
VSTO 2008では、Office 2007から新しく導入されたリボンの開発を行うことができます。リボンはドキュメントレベルのカスタマイズでも、アプリケーションレベルのアドインでも作成できます。実際にリボンのデザインを行うためにはプロジェクトの「新しい項目の追加」でリボン(ビジュアルデザイナ)を選択します。
新しい項目を追加すると、図6のようなリボンのデザイン画面が開きます。

リボンにはWindowsフォームの一般的なコントロールではなく、リボン用のOfficeリボンコントロールを配置します。利用するコントロールは異なりますが、デザイナ上にドラッグ&ドロップでコントロールを配置し、コントロールをダブルクリックするなどしてイベントハンドラを作成して、処理を記述するという方法は変わりません。なお、Windowsフォームのボタンなどのコントロールは利用できませんがFileOpenDialogなどコンポーネントは利用できますので適宜活用してください。
先ほど選んだリボン(ビジュアルデザイナ)を利用すると簡単にリボンのUIをデザインできますが、より高度なリボンの処理をしたい場合には、図5の状態でリボン(XML)を選択する必要があります。そうすることによってリボンのデザイン以外にも、以下に示すようなより高度な処理を行うことができるようになります。
- カスタムタブ(アドインと表示されるタブなど)に他のタブのグループを表示する
- リボンコントロールの既存の処理をオーバーライドする
- クイックアクセスツールバーの表示項目をカスタマイズする
- アドイン間でリボンを共有する
すでにリボン(ビジュアルデザイナ)によって作成済みのリボンがある場合には、リボンのデザイナ画面を右クリックして[リボンをXMLにエクスポート]とすることによってもリボンのXML定義を出力できます。

本稿で提供している「ApplicationLevel.zip」は、Excel 2007用のアプリケーションレベルのアドインを作成し、カスタムのリボンを追加して、リボン内のボタンが押されたときのイベントハンドラを処理するまでのサンプルを示したものです。
サンプルを実行するとリボンのタブに「アドイン」が追加され、そこにgroup1およびbutton1が表示されます。button1のClickイベントがRibbon1.csに実装されているため、button1をクリックするとメッセージが表示されます。
この記事は参考になりましたか?
- Visual Studio 2008徹底入門連載記事一覧
-
- チーム開発はこれで決まり! Visual Studio Team System 2008
- Visual Studio Tools for Officeで作るOfficeアプリケーシ...
- Visual Studio 2008で標準搭載されたWindows Workflow Fo...
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト りばてぃ/FUJIKO/ナオキ(リバティ, フジコ, ナオキ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア


