マクロの起動は「リボンUI」を基本とする

スタイル

これまでVBAアセットでは、「VBAマクロの起動にはクイックアクセスツールバー(QAT)を使う」ことをスタイルとしてきました。

しかし、2025年10月に開催された「旭川セキュリティシンポジウム2025」へのブース出展経験や、所内のMac利用率増加といった環境の変化に伴い、このスタイルを変更することにしました。

これからは、「AIを活用してリボンメニュー(タブ)を実装し、補助的にQATも提供する」です。

1. なぜスタイルを変更したのか?

以前の記事では「QATが最強」と結論づけていました。しかし、以下の2つの出来事がその考えを改めるきっかけとなりました。

ユーザーの反応

2025年の旭川セキュリティシンポジウムで「VA公用文」を一般の方に紹介した際、「マクロの性能」以前に「ボタンの場所がわからない」「操作が直感的でない」ことが大きな障壁になると痛感しました。

開発者が使いやすいと考えたQATよりも、一般ユーザーにとっては「リボンに専用のタブがある」方が圧倒的に親切で、製品としての信頼感も高いことがわかりました。

Mac環境への対応

勤務先の法律事務所でもMacの導入が進みました。以前の記事でも触れた通り、Windows版アドインで設定したQATは、Mac版Officeでは表示されません。

一方で、XMLで定義したリボンメニューは、適切に記述すればWindowsでもMacでも問題なく動作します。クロスプラットフォームで同じ操作性を提供するには、リボンUIの実装が不可欠です。

2. 新・起動方法 比較一覧表

AIの進化により、「実装難易度」の評価が劇的に変わりました。

起動方法特性(メリット)問題点(デメリット)以前との変化
リボンメニュー・発見性: 専用タブで機能が一目瞭然。
・互換性: Win/Mac両対応が可能。
・表現力: 大きなアイコンやラベルが使える。
・スペース: タブ切り替えが必要。
・実装難易度
AIにより実装コストがほぼゼロに。
最大のデメリットが解消されました。
QAT・アクセス性: 最速でクリック可能。
・常時表示: タブを切り替える必要がない。
・非互換: Macで使えない。
・地味: アイコンが小さく判別しにくい。
Windowsユーザー向けの「ショートカット」という位置付けに変更。

右クリックメニューは「不採用」とします

Office RibbonX Editorを使えば、XML記述で「右クリックメニュー(コンテキストメニュー)」をカスタマイズすることも技術的には可能です。

しかし、このリボンによる右クリックメニューの拡張はWindows版Office限定の機能であり、Mac版Officeでは反映されません。

「Macでも同じように使える」ことを重視する現在のVBAアセットのスタイルでは、右クリックメニューの実装は行わない(利用しない)こととします。

3. 実装に必要なツール

リボンUIを実装するには、以下のフリーソフトを使用します。これはMicrosoft公式のツールではありませんが、世界中のOffice開発者が使用しているデファクトスタンダードのようです。

  • ツール名: Office RibbonX Editor
  • 入手先: GitHub (fernandreu/office-ribbonx-editor) などからダウンロード可能

これまでは、このツールを使って「XMLというマークアップ言語を人間が手書きする」必要があったため、ハードルが高いとされていました。しかし、現在はXMLをAIに書かせれば良いため、知識はほとんど不要です。

4. 実践!AIとOffice RibbonX Editorで作るリボンUI

それでは、実際に「VBAアセット」というタブを作り、そこに「実行」ボタンを配置する手順を見ていきましょう。

Wordファイル(.docm/.dotm)でもExcelファイル(.xlsm/.xlam)でも手順は全く同じです。

手順1:AIにXMLを書かせる

ChatGPT、Gemini、ClaudeなどのAIチャットに、以下のように指示を出します。

【プロンプト例】(元自衛官の私は、AIの指示は常に命令口調です。)

Excel(またはWord)のアドイン開発をしている。リボンメニューに新しいタブ「VBAアセット」を追加し、その中にグループ「メイン処理」を作成、さらにその中に「処理実行」という大きなボタン(imageMsoは”PlayMacro”)を配置するためのRibbon XMLコードを書け。日本語ラベル対応とせよ。

【AIが出力するXMLの例】

AIは以下のようなコードを生成してくれます。これをコピーします。

<customUI xmlns="[http://schemas.microsoft.com/office/2009/07/customui](http://schemas.microsoft.com/office/2009/07/customui)">
  <ribbon>
    <tabs>
      <tab id="customTab" label="VBAアセット">
        <group id="customGroup" label="メイン処理">
          <button id="runButton" label="処理実行" 
                  imageMso="PlayMacro" size="large" 
                  onAction="OnRunButtonClick" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

※ ポイントは onAction="OnRunButtonClick" の部分です。これがボタンを押したときに動くVBAのプロシージャ名になります。

手順2:Office RibbonX EditorでXMLを埋め込む

  1. 対象のOfficeファイル(.xlsm, .xlam, .docm, .dotmなど)を一旦閉じます。
  2. Office RibbonX Editor を起動し、「Open」からそのファイルを開きます。
  3. 左側のツリービューでファイルを右クリックし、「Insert Office 2010+ Custom UI Part」 を選択します。
  4. 作成された customUI14.xml を選択し、右側のエディタエリアに、先ほどAIが作ったXMLを貼り付けます。
  5. 「Validate」ボタンを押してエラーがないか確認し、「Save」して閉じます。

手順3:VBAにコールバックを記述する

ここが最大の注意点です。リボンから呼ばれるマクロ(コールバック)は、通常の Sub Macro1() という形では動きません。引数を受け取る特別な形にする必要があります。

ファイルを開き、標準モジュールに以下のコードを記述します。

(これもAIに「このXMLに対応するVBAのコールバックコードを書け」と命じれば出力してくれます)

' リボンのボタンが押された時に実行されるプロシージャ
' 引数 control As IRibbonControl が必須です
' WordでもExcelでも共通の記述です
Sub OnRunButtonClick(control As IRibbonControl)
    ' ここに実行したい既存のマクロを呼び出す
    Call MyOriginalMacro
End Sub

Sub MyOriginalMacro()
    MsgBox "マクロが実行されました!", vbInformation, "VBAアセット"
End Sub

これで作業は完了です。ファイルを開き直すと、リボンに「VBAアセット」タブが出現しているはずです。

5. 問題は「imageMso」の選び方

リボンメニューを作る際、最も頭を悩ませるのが「どのアイコン(imageMso)を使うか」です。Officeには数千種類のアイコンが内蔵されていますが、その中から適切なアイコンのID(imageMso)を探し当てるのは至難の業です。

現状ではAIに聞いても適切なものが選ばれる場合が少ないため、以下の方法で視覚的に探すのが確実です。

検索サイトや一覧資料を利用する

有志が公開している「imageMso一覧サイト」やMicrosoft公式のPDF資料を見るのが早道です。Googleで以下のキーワードで検索してください。

  • imageMso List
  • Office 2016 imageMso Gallery

GitHubなどで画像付きの一覧表(PDFやWebページ)が見つかります。そこで気に入ったアイコンを見つけ、そのID(例: HappyFace)をコピーしてXMLに貼り付けます。

6. WindowsユーザーのためのQAT(ハイブリッド運用のすすめ)

リボンUIはわかりやすい反面、クリック数が増える(タブを切り替える手間がある)という弱点があります。

特にVA公用文のマークダウンとアウトラインの変換のように繰り返し使うコマンドには、ワンクリックで操作できるクイックアクセスツールバー(QAT)の価値は絶大です。QATへの登録をユーザーに委ねても良いのですが、それをやろうとしないユーザーが多いことを実感しています。

そのため、Windows環境向けには、アドイン側でリボンメニューに加えて、よく使う機能についてはQATも追加するようにします。

アドインにQATを追加する方法については、長くなるため別の記事で詳しく解説することにします。

コメント

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