カスタム作業ウインドウ

アプリケーションレベルのカスタム作業ウインドウ(アクションペイン)

[ファイル]⇒[新規作成]⇒[プロジェクト]⇒[Excel 2007 アドイン]を選択し、OKを押します。


[プロジェクト]⇒[ユーザーコントロールの追加]⇒[新しい項目の追加]⇒[ユーザーコントロール]を選択し、追加を押します。


コントロールのデザイナが開くので、適当なコントロール(ここではボタン)を配置します。


ボタンをダブルクリックしてイベントハンドラを生成し、以下のコードを加えます。
MessageBox.Show("Hello world!");
ThisAddIn.csのStartupイベントハンドラ(ThisAddIn_Startup)に、カスタム作業ウインドウを起動させるためのコードを入力します。


入力するコードは以下となります。

UserControl1 usercontrol1 = new UserControl1();
Microsoft.Office.Tools.CustomTaskPane customTaskPane
    = this.CustomTaskPanes.Add(usercontrol1, "アクションペイン");
customTaskPane.DockPosition
    = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionRight;
customTaskPane.Visible = true;

[デバッグ]⇒[デバッグの開始]で、以下のようなカスタム作業ウインドウが表示されます。


また、カスタム表示ウインドウ内のボタンをクリックすると、以下のダイアログが表示されます。


ここまでの操作で、Excelにアドインが登録されてしまうため、以下の要領で削除しておく必要があります。
まず、Excelを起動し、左上のボタンから[Excelのオプション]を選択します。


Excelのオプションが開くので、[アドイン]タブを選択します。


[アドイン]画面の下の方にある、以下のコンボボックスで、[COMアドイン]を選択して、[設定]ボタンを押します。


COMアドインの一覧が表示されるので、不要な物を選択し、削除します。この例の場合は、いちばん上のExcelAddin1を削除します。なお、先頭にあるチェックボックスは、削除処理には無関係ですので、注意してください。削除処理は、選択されている(=青くなっている)ものが対象となります。

ドキュメントレベルのカスタム作業ウインドウ(タスクペイン)

[ファイル]⇒[新規作成]⇒[プロジェクト]⇒[Excel 2007 ブック]を選択し、OKを押します。


[新規ドキュメントの作成]を選択して、OKを押します。


[プロジェクト]⇒[ユーザーコントロールの追加]⇒[新しい項目の追加]⇒[ユーザーコントロール]を選択し、追加を押します。


コントロールのデザイナが開くので、適当なコントロール(ここではボタン)を配置します。


ボタンをダブルクリックしてイベントハンドラを生成し、以下のコードを加えます。
MessageBox.Show("Hello world!");
ソリューションエクスプローラから、ThisWorkbook.csを右クリックし、[コードの表示]を選択します。
ThisWorkbook.csのコードが表示されるので、ThisWorkbookのStartupイベントハンドラ(ThisWorkbook_Startup)にコードを追加します。


追加するコードは以下となります。

UserControl1 uc = new UserControl1();
Globals.ThisWorkbook.ActionsPane.Controls.Add(uc);
Globals.ThisWorkbook.Application.CommandBars["Task Pane"].Position
    = Microsoft.Office.Core.MsoBarPosition.msoBarRight;

[デバッグ]⇒[デバッグの開始]で、次ページの図のようなカスタム作業ウインドウが表示されます。


また、カスタム表示ウインドウ内のボタンをクリックすると、以下のダイアログが表示されます。

アクションペインからドキュメントを操作する

先ほど作成したアクションペインのプロジェクトを使います。
まず、アドイン内にドキュメントを操作するpublicメソッドを追加します。


以下のコードを追加しました。

public void CellValueIncrement(int row, int col)
{
    Excel.Range cell = (Excel.Range)this.Application.Cells[row, col];
    if ((string)((IConvertible)cell.Text) == "")
    {
        this.Application.Cells[row, col] = 0;
    }
    this.Application.Cells[row, col] = ((IConvertible)cell.Text).ToInt32(null) + 1;
}

さらに、カスタム作業ウインドウ上のボタンのイベントハンドラにコードを追加します。


以下のコードを追加しました。

Globals.ThisAddIn.CellValueIncrement(1, 1);

[デバッグ]⇒[デバッグの開始]を行うと、以下のようにアクションペインが表示されます。


アクションペイン上のボタンを押すと、以下のダイアログが表示されます。


OKを押すと、A1のセルに1が表示されます。アクションペイン上のボタンを何度も押すと、1つずつカウントアップしていきます。


この例においても、登録されたCOMアドインを削除しておく必要があります。

タスクペインからドキュメントを操作する

プロジェクトを使います。
まず、操作したいシートのコードを表示して、ドキュメントを操作するpublicメソッドを追加します。


以下のコードを追加しました。

public void CellValueIncrement(int row, int col)
{
    Excel.Range cell = (Excel.Range)this.Application.Cells[row, col];
    if ((string)((IConvertible)cell.Text) == "")
    {
        this.Application.Cells[row, col] = 0;
    }
    this.Application.Cells[row, col] = ((IConvertible)cell.Text).ToInt32(null) + 1;
}

さらに、カスタム作業ウインドウ上のボタンのイベントハンドラにコードを追加します。


以下のコードを追加しました。

Globals.Sheet1.CellValueIncrement(1, 1);

[デバッグ]⇒[デバッグの開始]を行うと、次ページの図のように、タスクペインが表示されます。
タスクペイン上のボタンを押すと、ダイアログが表示されます。
OKを押すと、A1のセルに1が表示されます。タスクペイン上のボタンを何度も押すと、1つずつカウントアップしていきます。