2012-03-08 8 views
3

RibbonButtonで構築されたExcel 2010をExcelのVSTOアドインから有効にすることはできますか?ExcelビルトインのRibbonButtonを無効にするにはどうすればよいですか?

私は次のことを試してみました:

CommandBarControls controlls=Globals.ThisAddIn.Application.CommandBars.FindControls(MsoControlType.msoControlButton, 7374, null, false); 
/// 7374 is the office control id of the control I want to access 

foreach (CommandBarControl control in controlls) 
{ 
    control.Enabled = false; 
} 

をしかし、これは唯一の右クリックコンテキストメニューのために働くようです。リボンのボタンではありません。

答えて

4

startFromScratchリボンのUI属性を使用しない限り、コントロールのみでなくタブを無効にすることができます。 See MSDN for reference

Excelリボンの操作に関する優れたリソースについては、Ribbon XML FAQも参照してください。

+0

非常に便利なリンクです。 tnx – zdrsh

2

これが役立つかどうかはわかりませんが、カスタムリボンの場合は、リボンXMLを使用してgetEnabledコールバックを実装します。

XMLで

:あなたが強制的に(例えば、ときに有効これらのコールバックを呼び出すために必要がある場合はIRibbonUI.Invalidate()メソッドを呼び出す必要が

public bool OnMyButton_GetEnabled(Office.IRibbonControl rControl) 
{ 
    // return true or false to enable or disable 
} 

:コードビハインドで

<button id="btnMyButton" ... getEnabled="OnMyButton_GetEnabled" onAction="..."/> 

/無効状態変数は他のイベントによって設定されます)。

Btw、リボンデザイナーインターフェイス(VS 2010)では、getEnabledコールバックを実装する機能が提供されていないようです。

関連する問題