如何防止 Excel 在以编程方式切换工作表时显示图表设计功能区

How to prevent Excel from showing the Chart Design ribbon when programmatically switching sheets

我正在为 Excel 365 构建一个插件,需要能够以编程方式切换工作簿的激活 sheet。这很容易,目前使用以下代码完成:

sheet.Select();

这是一个例子:

但是,如果sheet是Chart(在图中Chart1),并且该图表是第一次选择,Excel会自动切换从我的自定义加载项功能区选项卡到功能区中的内置图表设计选项卡。通过这样做,用户失去了自定义选项卡,这对他们来说是一个可用性问题。

下面是我调用 sheet.Select():

后功能区的样子示例

问题:有没有办法阻止 Excel 切换选项卡,或者恢复该更改?

我尝试调用 ActivateTab,但在调用时,该方法总是抛出 ArgumentException 并显示以下消息:

Value does not fall within the expected range.

这是我在 Ribbon 组件中使用的代码:

var tab = this.Tabs.First();
var controlId = tab.ControlId;
var id = controlId.ToString();
this.RibbonUI.ActivateTab(id);// throws value does not fall within the expected range

您可以使用ActivateTabMso方法再次激活功能区选项卡:

this.RibbonUI.ActivateTabMso("TabAddIns");