トップ回答者
[VSTO]リボンで組み込みボタンを使用不可にすることは可能か?

質問
-
[環境]
Visual Studio 2010 Professional
.NET Framework 4.0
Excel 2010
組み込みで用意されているボタン(ホームタブ、クリップボードグループの切り取り等)を無効または非表示にする事は可能でしょうか。
リボン(XML)より以下のようにグループ単位で非表示にする事はできました。<tab idMso="TabHome" visible="true"> <group idMso="GroupClipboard" visible="false" /> </tab>
ただし、下記のようにボタン単位で消そうとしてもリボンでは反映されず、普通にボタンは表示されたままでした。
<tab idMso="TabHome" visible="true"> <group idMso="GroupClipboard" visible="true"> <button idMso="Cut" visible="false" /> </group> </tab>
また、下記のように無効化しようとしても普通に機能が使えました。
<tab idMso="TabHome" visible="true"> <group idMso="GroupClipboard" visible="true"> <button idMso="Cut" enabled="false" /> </group> </tab>
ボタン単位での非表示、または無効化設定は行えないのでしょうか。
ご存知の方がいましたらご教授頂けると幸いです。
回答
-
こんにちは。
私も上記のリボン(XML)を試してみましたが、ボタンの非表示及び無効化設定は行えませんでした。
恐らく標準の組み込みのボタンでは、カスタマイズできないのかもしれません。
標準ではなく、ボタンを無効化を行いたいグループ自体をカスタムグループとして定義すれば
実現可能でしたので下記にリボン(XML)のコードを貼り付けます。
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> <ribbon startFromScratch="true"> <tabs> <tab idMso="TabHome" visible="true"> <group idMso="GroupClipboard" visible="false"/> <group idMso="GroupFont" visible="true"/> <group idMso="GroupAlignmentExcel" visible="true"/> <group idMso="GroupNumber" visible="true"/> <group idMso="GroupStyles" visible="true"/> <group idMso="GroupCells" visible="true"/> <group idMso="GroupEditingExcel" visible="true"/> <!-- Custom Clipboard group --> <group id="CustomClipboard" label="クリップボード" insertBeforeMso="GroupClipboard" > <splitButton idMso="PasteMenu" size="large" /> <button idMso="Cut" enabled="false"/> <splitButton idMso="CopySplitButton"/> <control idMso="FormatPainter"/> <dialogBoxLauncher> <button idMso="ShowClipboard" /> </dialogBoxLauncher> </group> </tab> <tab idMso="TabInsert" visible="true"/> </tabs> </ribbon> </customUI>
"GroupClipboard"を編集するという前提で簡単に説明しますと、
標準のGroupClipboardでは、ボタンの無効化はできないため非表示とし、
その代わりに、CustomClipboardを追加しています。
ここでButtonの非表示、無効化などを指定すれば非表示・無効化が反映されるようになります。
また、上記のコードをそのまま適用すると、
ホームと挿入タブしか表示されないため、必要なタブは適宜追加を行って下さい。
- 回答としてマーク morisoba01 2015年1月31日 7:09
すべての返信
-
こんにちは。
私も上記のリボン(XML)を試してみましたが、ボタンの非表示及び無効化設定は行えませんでした。
恐らく標準の組み込みのボタンでは、カスタマイズできないのかもしれません。
標準ではなく、ボタンを無効化を行いたいグループ自体をカスタムグループとして定義すれば
実現可能でしたので下記にリボン(XML)のコードを貼り付けます。
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> <ribbon startFromScratch="true"> <tabs> <tab idMso="TabHome" visible="true"> <group idMso="GroupClipboard" visible="false"/> <group idMso="GroupFont" visible="true"/> <group idMso="GroupAlignmentExcel" visible="true"/> <group idMso="GroupNumber" visible="true"/> <group idMso="GroupStyles" visible="true"/> <group idMso="GroupCells" visible="true"/> <group idMso="GroupEditingExcel" visible="true"/> <!-- Custom Clipboard group --> <group id="CustomClipboard" label="クリップボード" insertBeforeMso="GroupClipboard" > <splitButton idMso="PasteMenu" size="large" /> <button idMso="Cut" enabled="false"/> <splitButton idMso="CopySplitButton"/> <control idMso="FormatPainter"/> <dialogBoxLauncher> <button idMso="ShowClipboard" /> </dialogBoxLauncher> </group> </tab> <tab idMso="TabInsert" visible="true"/> </tabs> </ribbon> </customUI>
"GroupClipboard"を編集するという前提で簡単に説明しますと、
標準のGroupClipboardでは、ボタンの無効化はできないため非表示とし、
その代わりに、CustomClipboardを追加しています。
ここでButtonの非表示、無効化などを指定すれば非表示・無効化が反映されるようになります。
また、上記のコードをそのまま適用すると、
ホームと挿入タブしか表示されないため、必要なタブは適宜追加を行って下さい。
- 回答としてマーク morisoba01 2015年1月31日 7:09