2017-07-24 149 views
1

我想这激活自定义选项卡:自定义标签不能被激活

Globals.Ribbons.MyRibbon.RibbonUI.ActivateTab("TabAddin") 

它根本什么都不做。没有错误,没有标签激活,什么都没有。

如果我将标签名称更改为不存在的选项卡,则会引发异常,这很明显。这意味着ActivateTab方法正在做一些事情,但不是它打算做什么。

请帮忙吗?这是VSTO for Excel 2016.

+0

的['ActivateTab'方法](https://msdn.microsoft.com/en-us/vba/office-shared-vba/articles/iribbonui-activatetab-method - 办公室)*方法返回S_FALSE如果没有功能区或功能区折叠*。你有没有调试过这些条件? –

+0

@DavidZemens IRibbonUI.ActivateTab返回void – jstuardo

+0

您是否将Ribbon属性ControlIdType设置为'custom'? – Malick

回答

2

事实证明,我是打开本书编程并立即调用Open方法后,我试图激活自定义选项卡。在那个阶段,选项卡还没有创建(也许Open方法是不同步的),这就是为什么选项卡没有被激活。

最后我已经使用这个打开的书:

var excelApp = Globals.ThisAddIn.Application; 
excelApp.WorkbookActivate += excelApp_WorkbookActivate; 
Excel.Workbook workbook = excelApp.Workbooks.Open(Filename: fileToOpen); 

和源文件的另一部分,我有:

void excelApp_WorkbookActivate(Excel.Workbook Wb) 
{ 
    Globals.ThisAddIn.Application.Wait(DateTime.Now.AddSeconds(1)); 
    this.RibbonUI.ActivateTab("TabLeanAddin"); 
    Globals.ThisAddIn.Application.WorkbookActivate -= excelApp_WorkbookActivate; 
} 

上述所有造成外接工作如预期。

干杯

海梅