先日、 @furyutei さんが(CommandBars).ExecuteMsoメソッドの引数となるコントロールIDの取得方法についてツイートされているのを目にしました。
はい、自分もその方法(クイックアクセスツールバーに登録してコントロールID確認)で調べました…ポップアップ(ツールチップ)の文字列簡単に取得する方法ありませんかね?🤔
— 風柳 (@furyutei) May 17, 2021
@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が公開しているリストからも取得できますので、お使いのバージョンに合わせてリストをダウンロードしてお使いください。
この記事へのコメントはありません。