はじめに
VSTOアドインでボタンを追加するとき、毎回専用タブを作るとExcelのリボンがすぐに混雑します。
機能が1つか2つだけなら、新しいタブを増やすより、既存の「開発」「数式」「データ」などのタブへ自分のグループを追加した方が自然です。
この記事では、Ribbon XMLでidを使った専用タブから、idMsoを使った既存タブ追加へ切り替える方法を紹介します。
使う場面
- Excelアドインのボタンが1つだけ
- 専用タブを増やすほどの機能数ではない
- 既存の「開発」タブや「数式」タブの中へ自然に置きたい
- リボンUIを整理して、利用者が迷わないようにしたい
before / after
変更の中心は、<tab id="...">を<tab idMso="...">へ変えることです。
コードを読み込み中...グループやボタン、onActionのコールバックはそのまま使えます。
主なidMso
| idMso | タブ |
|---|---|
| TabHome | ホーム |
| TabInsert | 挿入 |
| TabFormulas | 数式 |
| TabData | データ |
| TabReview | 校閲 |
| TabView | 表示 |
| TabDeveloper | 開発 |
開発タブは環境によって非表示の場合があります。常に見せたい機能なら、TabFormulasやTabDataなどの常設タブを選ぶ方が安全です。
実装時の注意点
- Ribbon XMLは
.csprojにEmbeddedResourceとして登録します。 - IRibbonExtensibilityの
GetCustomUIでXML文字列を返します。 onActionのメソッドはvoid Method(Office.IRibbonControl control)の形にします。- リボンXMLを変更しただけでは、インストール済みアドインにすぐ反映されない場合があります。再発行・再インストールを確認します。
- 既存タブ内での位置を指定したい場合は、
insertAfterMsoなども検討します。
このテクニックを使っているアプリ
このノウハウは、配布アプリ「階層化フォーム (IKI-Kaiso VSTO版)」で実装・確認しています。
まとめ
VSTOのリボンボタンは、必ず専用タブを作る必要はありません。
idMsoを使うと、Office標準の既存タブへ自分のグループを追加できます。機能数が少ないアドインでは、利用者にとっても自然で見つけやすい配置になります。
