カスタム作業ウインドウ
アプリケーションレベルのカスタム作業ウインドウ(アクションペイン)
[ファイル]⇒[新規作成]⇒[プロジェクト]⇒[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つずつカウントアップしていきます。