リボン

カスタムリボンの追加(ビジュアルデザイナ)

[ファイル]⇒[新規作成]⇒[プロジェクト]⇒[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;
    }
}


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