none
[VSTO]リボンで組み込みボタンを使用不可にすることは可能か? RRS feed

  • 質問

  • [環境]
    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>

    ボタン単位での非表示、または無効化設定は行えないのでしょうか。

    ご存知の方がいましたらご教授頂けると幸いです。

    2014年11月8日 7:12

回答

  • こんにちは。

    私も上記のリボン(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
    2015年1月6日 2:43

すべての返信

  • こんにちは。

    私も上記のリボン(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
    2015年1月6日 2:43
  • ご回答ありがとうございます。
    返信が遅くなり申し訳ありません。

    ご教授いただいた方法を試して組み込みボタンの
    無効化と同様の結果を得られることが確認できました。

    どうもありがとうございました。
    2015年1月31日 7:09