アドイン(xlam)のクイックアクセスツールバーにリボンと同じアイコンを設定するのはなかなか難しい

コラム

エクセルのアドインファイルにおいて、クイックアクセスツールバー(QAT)にリボンと同じアイコンを実装しようとしたところ、思いの外苦労することになりました。

まず、「Office RibbonX Editor」を使って、リボンと一緒にQATもXMLコード(<qat>タグ)で記述しようとしました。しかし、XMLの構文通りに記述しても、私の環境ではクイックアクセスツールバーにボタンが表示されませんでした。

そこで、Excel標準の「ユーザー設定」でQATを設定し、リボンとは別に管理しようとしました。しかし、ユーザー設定で選べるアイコンの imageMso が不明なため、リボン側のアイコンをQATに合わせることができません。このままでは、リボンとQATのアイコンが違ったものになってしまいます。

試行錯誤した結果、リボンを設定した後に次の手順を行えば、リボンと同じアイコンをQATに設定することができることが分かりました。

手順1. VBEでアドインを見える状態にする

  1. 「Office RibbonX Editor」を使ってリボンを設定したアドインファイル(.xlam)を開きます。
  2. Alt + F11 キーを押して、VBE(Visual Basic Editor)を開きます。
  3. プロジェクトエクスプローラーで ThisWorkbook を選択します。
  4. プロパティウィンドウ(表示されていない場合はF4キー)を確認します。
  5. IsAddin プロパティを True から False に変更すると、隠れていたアドインのワークシートがExcel上に表示されます。

手順2. ExcelのオプションからQATを設定する

  1. Excelの画面に戻り、「ファイル」タブ > 「オプション」 をクリックします。
  2. 「クイック アクセス ツールバー」 を選択します。
  3. 画面右上のドロップダウンリスト(ユーザー設定の適用先)を、「すべてのドキュメント」から「[現在のアドインファイル名] に適用」に変更します。
  4. 画面左上の「コマンドの選択」から、リボンに登録したタブ(例:[VA] タブ)を選択します。
  5. 追加したいボタンを選択し、中央の [追加 >>] ボタンを押すと、XMLで定義した imageMso(リッチなアイコン)がそのまま維持されて登録されます。
  6. [OK] を押して画面を閉じます。

手順3. アドイン状態に戻して保存する

  1. 再びVBEに戻ります。
  2. ThisWorkbookIsAddin プロパティを False から True に戻すと、再びブックが非表示(アドイン状態)になります。
  3. VBEの画面で 上書き保存(Ctrl + S)を行います。

この方法のメリット

  1. Macユーザーはリボンから、Windowsユーザーはリボンに加えてQATからアドインを操作できるようになります。
  2. XMLで定義したリボンのボタンをQATに登録しているため、アイコンのデザインが統一され、直感的に操作できます。

参考:リボン定義XMLの一例

(QATの記述は不要です。)

<customUI xmlns="[http://schemas.microsoft.com/office/2009/07/customui](http://schemas.microsoft.com/office/2009/07/customui)">
  <ribbon>
    <tabs>
      <tab id="tabVA" label="VA">
        <group id="grpVABridge" label="VAブリッジ">
          <button id="btnLoad" 
                  label="データ取込" 
                  imageMso="ShapeDownArrow" 
                  size="large" 
                  onAction="OnRibbonLoadFromDB" />
          <button id="btnConfig" 
                  label="設定" 
                  imageMso="DatabasePermissions" 
                  size="large" 
                  onAction="OnRibbonShowConfig" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

コメント

タイトルとURLをコピーしました