2017-07-24 9 views
1

J'essaie d'activer ce un onglet personnalisé:onglet personnalisé dans Excel ruban ne peut pas être activé

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

Il n'a tout simplement rien. Pas d'erreur, pas d'activation de tabulation, rien.

Si je change de nom d'onglet en un onglet inexistant, il déclenche une exception, ce qui est évident. Cela signifie que la méthode ActivateTab fait quelque chose, mais pas ce qu'elle est censée faire.

Une aide s'il vous plaît? C'est VSTO pour Excel 2016.

+0

Le [ 'procédé ActivateTab'] (https://msdn.microsoft.com/en-us/vba/office-shared-vba/articles/iribbonui-activatetab-method -office) * retourne S_FALSE s'il n'y a pas de Ruban ou si le Ruban est réduit *. Avez-vous débogué ces conditions? –

+0

@DavidZemens IRibbonUI.ActivateTab renvoie la valeur – jstuardo

+0

Avez-vous défini la propriété de votre ruban 'ControlIdType' sur 'custom'? – Malick

Répondre

2

Il s'est avéré que j'ouvrais le livre par programmation et immédiatement après avoir appelé la méthode Open, j'essayais d'activer l'onglet personnalisé. À ce stade, la tabulation n'est pas encore créée (peut-être que la méthode Open est asynchrone), c'est pourquoi la tabulation n'a pas été activée.

Enfin j'ai utilisé cette option pour ouvrir le livre:

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

Et dans une autre partie du fichier source, j'ai:

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

Tout ce qui précède a causé le complément au travail comme prévu.

Vive

Jaime