C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

リボン登録について

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■103720 / inTopicNo.1)  リボン登録について
  
□投稿者/ アンジッシュウ (1回)-(2025/06/03(Tue) 08:43:19)

分類:[.NET 全般] 

windows11pro
Excel2016
VBAマクロ
上記環境下において

エクセルのリボンに、マクロを使って
マクロを登録する方法はあるのでしょうか?
通常hあ
[表示][マクロ][マクロ名選択][実行]で行うのですが
マクロが多くなり、目的の探すのが厄介です。

通常使うものは少ないのでそれをリボンに登録
したいのですが、リボン登録ができないという人がいます。
それはそれで問題なのですが、

そこで、必ず使うマクロに関しては一度マクロを実行し、
リボンに登録していなければマクロ内で
リボンに登録するようにするということや、
マクロのリボンインストールなどのマクロは可能なのでしょうか?









引用返信 編集キー/
■103721 / inTopicNo.2)  Re[1]: リボン登録について
□投稿者/ kiku (474回)-(2025/06/03(Tue) 10:13:34)
2025/06/03(Tue) 10:16:16 編集(投稿者)
2025/06/03(Tue) 10:15:56 編集(投稿者)

<pre><pre>■No103720 (アンジッシュウ さん) に返信
> windows11pro
> Excel2016
> VBAマクロ
> 上記環境下において
>
> エクセルのリボンに、マクロを使って
> マクロを登録する方法はあるのでしょうか?

・マクロからマクロを登録する方法は見つけられませんでした。
 多分できないと思います。

・確認していませんが、アドインからできるかもしれません。

・マクロの名前を変えることで、優先順位の高いマクロを
 一番上に持っていくという運用が一番簡単かも。

 マクロの名前
  macro1
  macro2
  macro3
  ●macro1
 表示順
  ●macro1
  macro1
  macro2
  macro3

引用返信 編集キー/
■103722 / inTopicNo.3)  Re[2]: リボン登録について
□投稿者/ アンジッシュウ (2回)-(2025/06/03(Tue) 10:41:11)
No103721 (kiku さん) に返信

ありがとうございます。
やはり、無理なようですね。
ネットでも色々調べましたが見つかりませんでした。
解決済み
引用返信 編集キー/
■103723 / inTopicNo.4)  Re[1]: リボン登録について
□投稿者/ 魔界の仮面弁士 (3852回)-(2025/06/03(Tue) 11:54:59)
書いている間に終わってしまったようなので(汗)、解決済みチェックはつけたままにしておきます。

No103720 (アンジッシュウ さん) に返信
> エクセルのリボンに、マクロを使って
> マクロを登録する方法はあるのでしょうか?

リボンのカスタマイズは、XML による定義が必要です。
https://learn.microsoft.com/ja-jp/office/vba/library-reference/concepts/customize-the-office-fluent-ribbon-by-using-an-open-xml-formats-file

XML の仕様はこちら。
https://learn.microsoft.com/en-us/openspecs/office_standards/ms-customui/31f152d6-2a5d-4b50-a867-9dbc6d01aa43


手動で追加・変更したリボンやクイック アクセス ツールバーの場合は、
%LocalAppData%\Microsoft\Office\
の下の Excel.officeUI (または Excel*.officeUI) に保持されます。
中身は XML ファイルなので、メモ帳等で確認できるかと。

ファイル名は環境によって異なり、
 Excel 2007 ⇒ Excel.officeUI
 Excel 2010 ⇒ Excel14.officeUI
 Excel 2013 ⇒ Excel15.officeUI
 Excel 2016 ⇒ Excel16.officeUI
 Excel 365 ⇒ Excel.officeUI または Excel16.officeUI
などとなるそうです。Click-to-Run(C2R)版 ではバージョン指定のない Excel.officeUI が使われる傾向があるようで、
手元の Excel 2016 MSO も C2R 版なので、"Excel.officeUI" というファイル名で生成されていました。


あるいは、アドイン(.xlam)にリボン XML を埋め込むパターンもあります。
.xlam ファイルは ZIP 構造なので、/customUI/customUI.xml (または /customUI/customUI14.xml) に埋め込みます。
customUI フォルダは自動的に認識されるため、.rels ファイルによる関連付けは不要です。
(リボン XML が画像などのリソースを参照する場合は、customUI/_rels/customUI.xml.rels も作成します)


本題となる、クリック時に呼び出されるマクロの割り当てについては、
 <mso:button idQ="…" label="SampleButton1" imageMso="…" onAction="E:\Book1.xlsm!SampleMethod" visible="true"/>
のように、絶対パス指定で割り当てる方法もありますが、推奨されるのは、
 onAction="MyMacro"
のように「アドイン内のマクロ名のみ」を割り当てる方法です。あるいは、
 onAction="ThisWorkbook.MyMacro"
とすれば、「現在開いているブック内のマクロを参照」させることも可能です。(ブックが開かれていないと動作しません)
なお、
 onAction="..\MyMacro.xlsm!MyMacro"
のような相対パス指定や、環境変数を含めたパスなどはサポートされていなかったはずです。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ