Excel

クイックアクセスツールバーに登録してあるコントロールのIDを取得するVBAマクロ

先日、 @furyutei さんが(CommandBars).ExecuteMsoメソッドの引数となるコントロールIDの取得方法についてツイートされているのを目にしました。

@ExcelVBAer さんが当ブログの下記記事を紹介してくださっていますが、対象のコントロールをクイック アクセス ツール バーに追加すれば、オプション画面からポップアップでIDを確認できます。

ただ、ポップアップからIDを直接文字列として取得するのは手間が掛かるため、私としてはクイック アクセス ツール バーの情報が記録された設定ファイル(「%LOCALAPPDATA%\Microsoft\Office」フォルダにある「officeUI」ファイル)からIDを取得する方法をお薦めします。

officeUIファイルの実体はXMLで、下記のような構造になっています。

<mso:customUI xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
  <mso:ribbon>
    <mso:qat>
      <mso:sharedControls>
        <mso:control idQ="mso:AutoSaveSwitch" visible="true" />
        <mso:control idQ="mso:FileNewDefault" visible="false" />
        <mso:control idQ="mso:FileOpenUsingBackstage" visible="false" />
        <mso:control idQ="mso:FileSave" visible="true" />
        <mso:control idQ="mso:FileSendAsAttachment" visible="false" />
        <mso:control idQ="mso:FilePrintQuick" visible="false" />
        <mso:control idQ="mso:PrintPreviewAndPrint" visible="false" />
        <mso:control idQ="mso:Spelling" visible="false" />
        <mso:control idQ="mso:Undo" visible="true" />
        <mso:control idQ="mso:Redo" visible="true" />
        <mso:control idQ="mso:SortAscendingExcel" visible="false" />
        <mso:control idQ="mso:SortDescendingExcel" visible="false" />
        <mso:control idQ="mso:PointerModeOptions" visible="false" />
        <mso:control idQ="mso:OfficeExtensionsGallery2" visible="true" />
        <mso:control idQ="mso:OfficeExtensionsAppStore" visible="true" />
        <mso:control idQ="mso:OfficeExtensionsGallery3" visible="true" />
        <mso:control idQ="mso:AddInManager" visible="true" />
      </mso:sharedControls>
    </mso:qat>
  </mso:ribbon>
</mso:customUI>

これを見れば分かる通り、クイック アクセス ツール バーに登録されている各コントロールのIDはmso:control要素のidQ属性の値を取得すれば良いので、そのための簡単なマクロを書いてみました。

visible属性の値がtrueになっているmso:control要素からコントロールIDを取得し、(CommandBars).GetLabelMsoメソッドで取得したコントロールのラベルと一緒にクリップボードにコピーするだけのシンプルな処理です。
(Excelだけではなく、WordやPowerPointでも動くようにしてあります。)

OfficeアプリケーションのコントロールIDは、Microsoftが公開しているリストからも取得できますので、お使いのバージョンに合わせてリストをダウンロードしてお使いください。

関連記事

Microsoft 365 Virtual Marathon 2021でOffice Scriptsについてお話ししてきました。前のページ

Windows 10 May 2021 Update(21H1)をクリーンインストールしてみました。次のページ

関連記事

  1. Office関連

    Adobe Readerを利用してPDFファイルのページ数を取得するVBAマクロ

    mougの回答用に書いたコードです。mougは半年でログが消えてし…

  2. Office関連

    「図のリセット」を実行するExcelマクロ

    Msdn フォーラムに「Excel2010-VBA 画像「図の書式設定…

  3. Office関連

    空白文字を一括置換するWordマクロ

    様々なWord文書を扱っていると、下図のように“同じ空白のように見えて…

  4. Office関連

    [VBA]ユーザーフォームでBootstrapを使う。

    MSDNフォーラムにあった質問「VBAでのフォーム オブジェクトを立体…

  5. Office アドイン

    Office Scriptsってどんな機能?

    昨年の11月、Ignite 2019で発表されたオンライン版Excel…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP