SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

VSTOでExcel 2007のカスタムリボンを作成する

VSTOでExcel 2007のカスタムリボンを作成する

Excel 2007のカスタムリボンの作成 1

  • X ポスト
  • このエントリーをはてなブックマークに追加

コントロールの追加

 カスタムリボンで使用可能なコントロールには、次のようなものがあります。

カスタムリボンで使用可能なコントロール
コントロール 説明
Box グループ内のコントロールを整理するコンテナ。区分線、グループ、タブを除き、任意のコントロールを追加できる。
Button アクションを起動するボタン。
ButtonGroup 1つ以上のボタン、トグル ボタン、メニュー、分割ボタン、ギャラリを含むグループ。
CheckBox オンまたはオフにしてオプションの有効/無効を切り換えるボックス。
ComboBox リスト ボックスが付属したエディット ボックス。
DropDown ユーザーが選択できる項目の一覧。ユーザーが新しい項目を入力することはできない。
EditBox ユーザーがテキストを入力できるボックス。
Gallery ユーザーが選択できる項目を配列やグリッドで視覚的に示すメニュー。
Label リボン上のコントロールの識別に使用できるテキスト。
Menu ドロップダウン リスト。
Separator 一覧内の項目を分割するために使用する細いバー。
SplitButton メニューが付属したボタン。
ToggleButton 押された状態または押されていない状態で表示されるボタン。

 先ほど作成した「マイグループ」にDropDownコントロールを追加し、ユーザーが選択した項目をアクティブなセルへ入力してみたいと思います。

 はじめに、ツールボックスの[Officeリボン コントロール]からDropDownコントロールを選択し「マイグループ」へドロップします。

 追加されたDropDown1コントロールを選択し、プロパティウィンドウで次のように設定してください。

Nameプロパティ DropDownFruits
Labelプロパティ フルーツ
 

 次に、DropDownFruitsへアイテムを追加したいと思います。

 アイテムの追加は、DropDownのItemsプロパティでも設定可能ですが、今回はリボンがロードされたときに行ってみたいと思います。

  1. リボンデザイナで「MyRibbon1」と書かれたところをクリックする。
  2. プロパティウィンドウで「MyRibbon1」が選択されていることを確認し、イベント(カミナリマーク)ボタンを押す。
  3. Loadイベントをダブルクリックする。

 下記のようにコードを入力してください。

VB.NET
Private Sub MyRibbon1_Load(ByVal sender As System.Object, _
 ByVal e As RibbonUIEventArgs) Handles MyBase.Load
  Dim strFruits As String() = {"リンゴ", "バナナ", "ミカン"}

    For Each strFruit As String In strFruits
        'アイテムの作成
        Dim item As New RibbonDropDownItem
        item.Label = strFruit

        'アイテムの追加
        DropDownFruits.Items.Add(item)
    Next
End Sub
C#
private void MyRibbon1_Load(object sender, RibbonUIEventArgs e)
{
  string[] strFruits = { "リンゴ", "ミカン", "バナナ" };

    foreach (string strFruit in strFruits)
    {
        // アイテムの作成
        RibbonDropDownItem item = new RibbonDropDownItem();
        item.Label = strFruit;

        // アイテムの追加
        dropDownFruits.Items.Add(item);
    }
}

 これでDropDownFruitsへアイテムを追加することができました。

 次に、ユーザーが選択したアイテムをアクティブなセルへ入力してみたいと思います。

 リボンデザイナへ戻って、

  1. DropDownFruitsを選択する
  2. プロパティウィンドウのイベント(カミナリマーク)ボタンを押す
  3. SelectionChangedイベントをダブルクリックする

 下記のようにコードを入力してください。

VB.NET
Private Sub DropDownFruits_SelectionChanged( _
 ByVal sender As System.Object, ByVal e As _
 Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles _
 DropDownFruits.SelectionChanged
  'アクティブなセルへ、ユーザーが選択したアイテムを入力
    Globals.ThisWorkbook.Application.ActiveCell.Value2 = _
      DropDownFruits.SelectedItem.Label
End Sub
C#
private void dropDownFruits_SelectionChanged(
 object sender, RibbonControlEventArgs e)
{
    // アクティブなセルへ、ユーザーが選択したアイテムを入力
    Globals.ThisWorkbook.Application.ActiveCell.Value2 =
      dropDownFruits.SelectedItem.Label;
}

 少しコードの説明をします。

 ロードイベントでは、リンゴ、バナナ、ミカンの文字列が入った配列変数を作成し For Eachで取り出しながら、DropDownコントロールへ追加しています。

 DropDownコントロールへのアイテムの追加はItemsプロパティのAddメソッドで行います。

 次に、アイテム選択時の処理ですが、DropDownのSelectionChangeイベントを使用しました。SelectionChangeイベントは、DropDownに表示されたアイテムの選択変更時に発生します。

 アクティブセルの取得はGlobalsクラスを使用して取得しています。Globalsクラスはプロジェクト内の項目への参照を保持する静的クラスで、VSTO開発を行う上で欠かせないものです。Globalsクラスを使用することで、プロジェクト内のWorkbook、Worksheetなどへのアクセスが可能です。

 アクティブなセルは

Globals.ThisWorkbook.Application.ActiveCell

 で取得可能で、値を設定するには

Globals.ThisWorkbook.Application.ActiveCell.Value2

 プロパティに対して行います。

まとめ

 今回はVisual Studio 2008 VSTOを使用してExcel2007へカスタムリボンを追加する方法について説明しました。簡単にカスタムリボンを作成できることを実感いただけたかと思います。

 次回はカスタムリボンのタブコントロール、グループコントロール、Officeボタンの操作方法について説明したいと思います。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
VSTOでExcel 2007のカスタムリボンを作成する連載記事一覧
この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2286 2008/08/26 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング