スタイル

VBAマクロの起動にはクイックアクセスツールバーを使う

VBAマクロを起動するにはさまざまな方法がありますが、特にVBAをアドインとして使用する場合には、クイックアクセスツールバーを使うのがVBAアセットのスタイルです。

アドインで使えるマクロ起動方法

WordのSTARTUPフォルダに入れて自動起動するアドイン(グローバルテンプレート)を前提とした場合、ユーザー(または自分自身)がマクロを起動する方法には、以下の5つがあります。

  1. クイックアクセスツールバー (QAT)
  2. リボンメニュー
  3. 右クリックメニュー(コンテキストメニュー)
  4. ショートカットキー
  5. イベント(自動実行)

これ以外に、リボンの「マクロ」メニューから起動するプロシージャを選択する方法もありますが、操作が面倒なのでここでは除外します。

起動方法 比較一覧表

各方法の特性と問題点を一覧表にまとめてみました。

起動方法特性(メリット)問題点(デメリット)
クイックアクセスツールバー (QAT)常時表示: どのタブでも常に表示され、アクセス性が最強。
マウス操作: マウス操作の流れで即座にクリックできる。
視認性: アイコンで視覚的に識別できる。
OS間非互換: Windowsアドインで組み込んだQAT設定は、Macでは機能しません。
ユーザーによる削除: ユーザーが誤ってボタンを削除できてしまう。
煩雑化: 複数のアドインがボタンを追加すると、QATがすぐに一杯になる。
リボンメニュー公式なUI: アドイン専用のタブやグループに機能を体系的に配置でき、最も「製品」らしく見える。
表現力: アイコン、ラベル、説明文を自由に設定でき、分かりやすい。
OS間互換: XMLで正しく記述すれば、Windows/Mac両対応が可能。
アクセス性: リボンタブを切り替えると隠れてしまう(常時表示できない)。
実装難易度: 作成・編集にXML (RibbonX) の知識が必須で、最も手間がかかる。
右クリックメニュー文脈依存: 「選択中のテキストに対し…」など、操作対象の直近で呼び出せる。
操作効率: マウスの移動距離が最小で済む。
省スペース: 普段は隠れており、画面を一切圧迫しない。
発見性: ユーザーが右クリックするまで、機能の存在に気づかれにくい。
肥大化: 機能を追加しすぎると、標準のメニューが長くなり邪魔になる。
実装難易度: XMLまたはVBA (CommandBars) での実装知識が必要。
ショートカットキー最速: 慣れたユーザーにとっては、キーボードから手を離さず最速で実行できる。
省スペース: UI(画面)を一切消費しない。
操作の継続: タイピング作業を中断しない。
暗記必須: ユーザーがキーの組み合わせを覚えない限り、使えない。
競合(コンフリクト): Word標準やOS、他のアドインのキーと衝突する危険性が高い。
発見性: 機能の存在も、割り当てられたキーも、最も気づかれにくい。
イベント
(自動実行)
自動化: ユーザーの操作が不要(AutoExec: Word起動時など)。
確実性: アドインの初期設定や環境チェックなどを、ユーザーの操作に関わらず確実に実行できる。
制御不能: ユーザーの意図しないタイミングで実行されるため、UI操作には絶対に使えない。
多用厳禁: 処理が重いと、Wordの起動が目に見えて遅くなる。
デバッグ: 問題発生時の原因切り分けが難しい場合がある。

なぜQATはWindowsとMacで互換性がないのか?

QATの最大の問題点は「非互換性」です。WindowsのWordアドインにQAT設定を組み込んでも、そのアドインをMacに持っていくとQATボタンは表示されません。

これは、Windows版とMac版のOfficeが、内部的に異なる設計になっているためです。アドインに保存された「Windows版Office向けのQAT設定」を、Mac版Officeが正しく解釈できないのです。

リボンや右クリックメニューの実装方法は?

一方、リボンや右クリックメニューの設定が難しい原因は、その実装方法にあります。

1. VBA (CommandBars) での実装

Office 2003以前の古い仕組み(Application.CommandBars)が、互換性のためにVBAに残されています。

  • 右クリックメニュー: この古い仕組みを使い、VBAコードだけで比較的簡単にボタンを追加できます。
  • リボン: この方法でリボンを操作することは、事実上できません。

「VA公用文」も、この方法で右クリックメニューを実装したことがありますが、動作が不安定(メニューが表示されなかったり、重複してしまったりする)だったため、使用を中止しました。

2. XML (RibbonX) での実装

Office 2007以降の標準的な方法で、アドインファイル(.dotm)自体にcustomUI.xmlという定義ファイルを埋め込みます。

  • リボン: リボンをカスタマイズする唯一の正規な方法です。タブ、グループ、ボタンの配置をXMLで厳密に定義します。
  • 右クリックメニュー: XMLでも定義可能で、リボンと一貫性を持たせた管理ができるため、現代的なアドイン開発ではこちらが推奨されます。

XMLをアドインに組み込むためには「Custom UI Editor」などの外部ツールを使う必要があり、VBAアセットでは試したことがありません。

結論

アドインのVBAマクロの起動には、クイックアクセスツールバーを使うのが最も簡単かつ確実な方法です。問題はMacとの互換性ですが、ユーザーで設定しなおしてもらうことで対応してもらいます。

コメント

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