2014/02/27

既存のリボンメニューにコントロールを追加する方法


リボンメニューに新しい機能を追加する場合、通常だと新規タブに機能を追加します。ですが、ちょっとした機能を追加したい場合は、既存のリボンメニューにコントロールを追加することができます。

しかし、既存のリボンメニューのコントロール ID が分からないとできません。

あまり周知されていませんが、Microsoft は Office のバージョンごとにコントロール ID 一覧を公開しています。

試しに、Office 2010 のコントロール ID 一覧をダウンロードしてインストールすると、以下のようにたくさんのファイルが作成されます。Excel や Word だけでなく、全ての Office アプリケーション用のコントロール ID が用意されています。

pic01

Excel のコントロールID 一覧の「ExcelControls.xlsx」を開くと以下のような情報が表示されます。コントロール名、コントロールタイプ、タブ名などが表示されています。この情報を元にリボンメニューをカスタマイズすることができます。

pic02

ここで、新規のマクロ付き Excel マクロ有効ブック(*.xlsm) を作成して、リボンメニューをカスタマイズしてみましょう。リボンメニューの編集には、Office Ribbon Editor を使用します。Office Ribbon Editor の利用方法は、以下の記事を参考にしてください。

まず、リボンメニューのどこに追加するか決めておきましょう。ホームタブの一番左側が分かりやすいのでここにボタンを追加しましょう。

pic03

ここで、先ほどのコントロール ID 一覧の Excel ファイルの出番です。追加先のタブは、ホームタブなので、タブ名は "TabHome" になります。クリップボードグループは "GroupClipboard" になります。フィルタをうまく使うと見つけやすいです。

pic04

リボンメニューの XML を以下のように作成します。赤字になっている部分がポイントです。

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  <ribbon startFromScratch="false">
    <tabs>
      <tab idMso="TabHome">
        <group id="customGroup" insertBeforeMso="GroupClipboard" label="サンプル">
          <button id="customButton" label="Hello!" imageMso="HappyFace" size="large" onAction="Callback" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

VBA のコードはシンプルに以下のようにしましょう。

Sub Callback(ribbon As IRibbonControl)
  MsgBox "Hello!"
End Sub

この Excel ファイルを開くとホームタブの一番左側にボタンが追加されていて、ボタンをクリックするとメッセージが表示されるようになります。

pic05

これで、既存のリボンメニューのカスタマイズ方法が分かりました。

いろいろと応用が効きそうですね。


スポンサーリンク


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




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。

    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから