代码之家  ›  专栏  ›  技术社区  ›  jstuardo

无法激活Excel功能区中的自定义选项卡

  •  1
  • jstuardo  · 技术社区  · 7 年前

    我正在尝试此操作以激活自定义选项卡:

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

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

    需要帮忙吗?这是VSTO for Excel 2016。

    1 回复  |  直到 7 年前
        1
  •  2
  •   jstuardo    7 年前

    事实证明,我是以编程方式打开这本书的,在调用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;
    }
    

    所有这些都使插件按预期工作。

    干杯