チュートリアル: 初めての Excel 用 VSTO アドインを作成する

この入門チュートリアルでは、Microsoft Office Excel 用のアプリケーション レベルのアドインを作成する方法について説明します。 この種のソリューションに作成した機能は、どのブックが開いているかにかかわらず、アプリケーション自体に対して使用できます。

対象: このトピックの情報は、Excel の VSTO アドインのプロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

Note

複数のプラットフォームで Office エクスペリエンスを拡張するソリューションの開発に関心がありますか。 新しい Office アドイン モデルを確認してください。 Office アドインの占有領域は、VSTO アドインやソリューションと比較して小さく、その作成には、HTML5、JavaScript、CSS3、XML など、ほぼすべての Web プログラミング テクノロジを使用できます。

このチュートリアルでは、次の作業について説明します。

  • Excel 用の Excel VSTO アドイン プロジェクトを作成する。

  • Excel のオブジェクト モデルを使用して、保存時にテキストをブックに追加するコードを記述する。

  • プロジェクトをビルドし、実行してテストする。

  • 完成したプロジェクトをクリーンアップして、開発用コンピューターでこの VSTO アドインが自動的に実行されないようにする。

    Note

    次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。

必須コンポーネント

このチュートリアルを実行するには、次のコンポーネントが必要です。

プロジェクトを作成する

Visual Studio で新しい Excel VSTO アドイン プロジェクトを作成するには

  1. Visual Studio を起動します。

  2. [ファイル] メニューの [新規作成] をポイントし、 [プロジェクト] をクリックします。

  3. テンプレート ペインで、 [Visual C#] または [Visual Basic]を展開してから、 [Office/SharePoint]を展開します。

  4. 展開した [Office/SharePoint] ノードの下で、 [Office Add-ins] ノードを選択します。

  5. プロジェクト テンプレートの一覧で、 [Excel 2010 アドイン] または [Excel 2013 アドイン]を選択します。

  6. [名前] ボックスに、「 FirstExcelAddIn」と入力します。

  7. OK をクリックします。

    Visual Studio により FirstExcelAddIn プロジェクトが作成され、ThisAddIn コード ファイルがエディターで開かれます。

保存するブックにテキストを追加するためのコードを記述する

次に、ThisAddIn コード ファイルにコードを追加します。 この新しいコードでは、Excel のオブジェクト モデルを使用して、アクティブなワークシートの最初の行に定型句を挿入します。 アクティブなワークシートとは、ユーザーがブックを保存したときに開いているワークシートのことです。 ThisAddIn コード ファイルには、次の生成コードが既定で含まれています。

  • ThisAddIn クラスの部分定義。 このクラスは、コードのエントリ ポイントを提供し、Excel のオブジェクト モデルへのアクセスを提供します。 詳しくは、「VSTO アドインのプログラミング」をご覧ください。ThisAddIn クラスの残りの部分は、変更することができない非表示のコード ファイルに定義されています。

  • ThisAddIn_Startup および ThisAddIn_Shutdown イベント ハンドラー。 これらのイベント ハンドラーは、Excel が VSTO アドインを読み込むときとアンロードするときに呼び出されます。 これらのイベント ハンドラーを使用して、読み込まれるときには VSTO アドインを初期化し、アンロードされるときにはアドインが使用したリソースをクリーンアップします。 詳細については、「Office プロジェクトのイベント」を参照してください。

保存するブックにテキストの行を追加するには

  1. ThisAddIn コード ファイルで、次のコードを ThisAddIn クラスに追加します。 この新しいコードでは、ブックが保存されるときに発生する WorkbookBeforeSave イベントのイベント ハンドラーを定義します。

    ユーザーがブックを保存すると、イベント ハンドラーによって新しいテキストがアクティブなワークシートの先頭に追加されます。

    void Application_WorkbookBeforeSave(Microsoft.Office.Interop.Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel)
    {
        Excel.Worksheet activeWorksheet = ((Excel.Worksheet)Application.ActiveSheet);
        Excel.Range firstRow = activeWorksheet.get_Range("A1");
        firstRow.EntireRow.Insert(Excel.XlInsertShiftDirection.xlShiftDown);
        Excel.Range newFirstRow = activeWorksheet.get_Range("A1");
        newFirstRow.Value2 = "This text was added by using code";
    }
    
  2. C# を使用する場合は、次の必要なコードを ThisAddIn_Startup イベント ハンドラーに追加します。 このコードは、 Application_WorkbookBeforeSave イベント ハンドラーを WorkbookBeforeSave イベントに接続するために使用します。

    this.Application.WorkbookBeforeSave += new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeSaveEventHandler(Application_WorkbookBeforeSave);
    

    保存時にブックを変更するために、前のコード例では次のオブジェクトを使用しています。

  • Application クラスの ThisAddIn フィールド。 Application フィールドは Excel の現在のインスタンスを表す Application オブジェクトを返します。

  • Wb イベントのイベント ハンドラーの WorkbookBeforeSave パラメーター。 Wb パラメーターは、保存されるブックを表す Workbook オブジェクトです。 詳細については、「Excel オブジェクト モデルの概要」を参照してください。

プロジェクトをテストする

プロジェクトをテストするには

  1. F5 キーを押して、プロジェクトをビルドおよび実行します。

    プロジェクトをビルドすると、プロジェクトのビルド出力フォルダーに含まれるアセンブリにコードがコンパイルされます。 さらに Visual Studio は、Excel が VSTO アドインを検出して読み込めるようにする一連のレジストリ エントリを作成し、VSTO アドインを実行できるように開発用コンピューター上のセキュリティを設定します。 詳細については、「Office ソリューションのビルド」を参照してください。

  2. Excel で、ブックを保存します。

  3. 次のテキストがブックに追加されていることを確認します。

    This text was added by using code.

  4. Excel を閉じます。

プロジェクトをクリーンアップする

プロジェクトの開発が完了したら、VSTO アドイン アセンブリ、レジストリ エントリ、およびセキュリティ設定を開発用コンピューターから削除します。 そうしないと、開発用コンピューター上で Excel を起動するたびに VSTO アドインが実行され続けます。

開発用コンピューターから完成したプロジェクトをクリーンアップするには

  1. Visual Studio で、 [ビルド] メニューの [ソリューションのクリーン]をクリックします。

次のステップ

これで Excel 用の基本的な VSTO アドインが作成されました。VSTO アドインの開発方法の詳細について、以下のトピックを参照してください。