2017-07-24 152 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; 
} 

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

乾杯

海梅