リボン
カスタムリボンの追加(ビジュアルデザイナ)
[ファイル]⇒[新規作成]⇒[プロジェクト]⇒[Excel 2007 アドイン]を選択し、OKを押します。
[プロジェクト]⇒[ユーザーコントロールの追加]⇒[新しい項目の追加]⇒[ユーザーコントロール]を選択し、追加を押します。
コントロールのデザイナが開きますが、ここでは何も行いません。
ThisAddIn.csのStartupイベントハンドラ(ThisAddIn_Startup)に、カスタム作業ウインドウを起動させるためのコードを入力します。
ただし、初期状態では非表示にしておきます。追加するコードは以下となります。
private Microsoft.Office.Tools.CustomTaskPane customTaskPane; private void ThisAddIn_Startup(object sender, System.EventArgs e) { UserControl1 usercontrol1 = new UserControl1(); customTaskPane = this.CustomTaskPanes.Add(usercontrol1, "アクションペイン"); customTaskPane.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionRight; customTaskPane.Visible = false; }
さらに、外部からカスタム作業ウインドウの表示状態を変更できるように、プロパティを追加します。
追加するコードは以下となります。
public bool Visible { get { return customTaskPane.Visible; } set { customTaskPane.Visible = value; } }
ソリューションエクスプローラで[RibbonTest1]プロジェクトを右クリックし、[追加]⇒[新しい項目]を開きます。
[リボン(ビジュアルデザイナ)]を選択し、追加を押します。
リボンデザイナが開きます。
タブとグループのLabelプロパティを編集します。
リボン内にボタンを追加します。[ツールボックス]のOfficeリボンコントロールからドラッグ&ドロップします。
ボタンをダブルクリックして、イベントハンドラを表示します。イベントハンドラ内には、カスタム作業ウインドウを表示するためのコードを記述します。
追加するコードは以下となります。
Globals.ThisAddIn.Visible = !Globals.ThisAddIn.Visible;
[デバッグ]⇒[デバッグの開始]を行うと、以下のように、リボンにカスタムタグが追加された状態になります。
テストタブを選択します。
ここで、[ボタン1]を押すと、右側にアクションペインが表示されます。さらに、もう一度[ボタン1]を押すと、アクションペインが非表示になります。
なお、この例においても、登録されたCOMアドインを削除しておく必要があります。
カスタムリボンの追加(XML)
[ファイル]⇒[新規作成]⇒[プロジェクト]⇒[Excel 2007 アドイン]を選択し、OKを押します。
[プロジェクト]⇒[ユーザーコントロールの追加]⇒[新しい項目の追加]⇒[ユーザーコントロール]を選択し、追加を押します。
コントロールのデザイナが開きますが、ここでは何も行いません。
ThisAddIn.csのStartupイベントハンドラ(ThisAddIn_Startup)に、カスタム作業ウインドウを起動させるためのコードを入力します。ただし、初期状態では非表示にしておきます。追加するコードは以下となります。
private Microsoft.Office.Tools.CustomTaskPane customTaskPane; private void ThisAddIn_Startup(object sender, System.EventArgs e) { UserControl1 usercontrol1 = new UserControl1(); customTaskPane = this.CustomTaskPanes.Add(usercontrol1, "アクションペイン"); customTaskPane.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionRight; customTaskPane.Visible = false; }
さらに、外部からカスタム作業ウインドウの表示状態を変更できるように、プロパティを追加します。追加するコードは以下となります。
public bool Visible { get { return customTaskPane.Visible; } set { customTaskPane.Visible = value; } }
ソリューションエクスプローラで[RibbonTest2]プロジェクトを右クリックし、[追加]⇒[新しい項目]を開きます。[リボン(XML)]を選択し、追加を押します。
リボンのコードが表示されます。
ここで、コメントの指示通り、ThisAddIn.csにコードを追加します。
追加するコードは以下となります。
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() { return new Ribbon1(); }
リボンの内容を定義しているXMLファイル(Ribbon1.xml)を開きます。
ラベルを変更します。
ボタンを1つ追加します。
追加したボタンに対応するコールバック関数を追加します。
追加するコードは以下となります。
public void Button_OnAction(Office.IRibbonControl control) { Globals.ThisAddIn.Visible = !Globals.ThisAddIn.Visible; }
[デバッグ]⇒[デバッグの開始]を行うと、以下のように、リボンにカスタムタグが追加された状態になります。
テストタブを選択します。
ここで、[ボタン1]を押すと、右側にアクションペインが表示されます。さらに、もう一度[ボタン1]を押すと、アクションペインが非表示になります。
なお、この例においても、登録されたCOMアドインを削除しておく必要があります。
カスタムリボンとカスタム作業ウインドウの連携
[ファイル]⇒[新規作成]⇒[プロジェクト]⇒[Excel 2007 アドイン]を選択し、OKを押します。
[プロジェクト]⇒[ユーザーコントロールの追加]⇒[新しい項目の追加]⇒[ユーザーコントロール]を選択し、追加を押します。
コントロールのデザイナが開きますので、リストボックスを追加します。
リストボックスをダブルクリックして、イベントハンドラを生成します。
UserControl1のコンストラクタ内に、リストボックスを初期化するコードを記述します。
追加するコードは以下となります。
listBox1.BeginUpdate(); listBox1.Items.Add("ほげほげ”); listBox1.Items.Add("ふがふが”); listBox1.Items.Add("ほがほが”); listBox1.EndUpdate();
listBox1の選択状態変更のイベントハンドラについては、いったん後回しにします。
ThisAddIn.csのStartupイベントハンドラ(ThisAddIn_Startup)に、カスタム作業ウインドウを起動させるためのコードを入力します。ただし、初期状態では非表示にしておきます。追加するコードは以下となります。
private Microsoft.Office.Tools.CustomTaskPane customTaskPane; private void ThisAddIn_Startup(object sender, System.EventArgs e) { UserControl1 usercontrol1 = new UserControl1(); customTaskPane = this.CustomTaskPanes.Add(usercontrol1, "アクションペイン"); customTaskPane.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionRight; customTaskPane.Visible = false; }
さらに、外部からカスタム作業ウインドウの表示状態を変更できるように、プロパティを追加します。追加するコードは以下となります。
public bool Visible { get { return customTaskPane.Visible; } set { customTaskPane.Visible = value; } }
ソリューションエクスプローラで[RibbonTest3]プロジェクトを右クリックし、[追加]⇒[新しい項目]を開きます。[リボン(XML)]を選択し、追加を押します。
ThisAddIn.csにカスタムリボンを使用するためのコードを追加します。追加するコードは以下となります。
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() { return new Ribbon1(); }
ソリューションエクスプローラでRibbon1.xmlをダブルクリックして、編集します。ここでは、ボタンを1つ追加します。
追加したボタンに対応するコールバック関数を追加します。
追加するコードは以下となります。
public void Button_OnAction(Office.IRibbonControl control) { Globals.ThisAddIn.Visible = !Globals.ThisAddIn.Visible; }
ThisAddIn.csに、指定した文字列をアクティブセルにセットする関数を加えます。
追加したコードは以下となります。
public void SetCellValue(string value) { Excel.Range activeCell = this.Application.ActiveCell; activeCell[1,1] = value; }
listBox1の選択状態変更のイベントハンドラを実装します。
追加したコードは以下となります。
Globals.ThisAddIn.SetCellValue((string)listBox1.SelectedItems[0]);
[デバッグ]⇒[デバッグの開始]を行うと、リボンにカスタムタグが追加された状態になります。カスタムタグを選択し、ボタンを押すと、カスタム作業ウインドウが表示されます。
カーソルを適当な位置にもっていき、リストボックスの項目を選択すると、カーソルがあるセルに、選択した文字列が表示されます。
また、SetCellValueを以下のように変更すると、選択範囲すべてに値が設定されます。
public void SetCellValue(string value) { //Excel.Range activeCell = this.Application.ActiveCell; //activeCell[1,1] = value; Excel.Range selectedCell = this.Application.ActiveWindow.RangeSelection; foreach (Excel.Range current in selectedCell) { current[1, 1] = value; } }