隐藏MS Office功能区中的加载项选项卡(尤其是PowerPivot选项卡)

时间:2012-12-05 09:39:17

标签: excel ms-word ms-office powerpoint ribbonx

我正在修改Excel文件的色带,隐藏所有默认和上下文选项卡,但只显示我自己的选项卡。但是,一旦安装了带有自己的选项卡的任何加载项,这些选项卡仍会显示,因为我不知道如何解决它们。

我知道您可以使用<ribbon startFromScratch="true">删除所有标签,但我需要将它们留在原位(我实际上使用了一个getVisible回调来隐藏它们,但是将它们显示给管理员)。

所以,问题如下:

  1. 有没有办法为所有未知的标签应用“默认”getVisible回调(我猜答案是否定的)
  2. 如何找出其他加载项标签的tabID
  3. 鉴于PowerPivot越来越普及(特别是在Excel 2013中) - 此选项卡的tabID是什么?

2 个答案:

答案 0 :(得分:3)

这是一个很棒的问题,关于使用第三方色带的文档或示例很少。我已经做了很多挖掘工作,可以帮助你完成你想要的大部分工作。我会回答你的问题,但是问题稍微有点不合适了。

3)PowerPivot插件的标签ID是限定符ID(因此必须与idQ一起使用)并且为tabGemini。您必须在名称空间中使用它:Microsoft.AnalysisServices.Modeler.FieldList。 您可以通过向架构添加命名空间来检查:

xmlns:x1="Microsoft.AnalysisServices.Modeler.FieldList"

然后在声明标签的ID时,使用以下内容在PowerPivot标签前插入标签:

insertBeforeQ="x1:tabGemini"

2)我很难找到PowerPivot的标签ID,因为它是一个VSTO COM插件,所以你不能像使用.xlam文件一样访问XML。答案很简单,但您需要Office 2010或更高版本。打开Excel并打开您感兴趣的插件,转到“文件”菜单,然后选择“选项”。选择“自定义功能区”,然后在顶部窗口的右侧选择“自定义功能区:主选项卡”。现在取消选中您感兴趣的插件,然后取消选中导入/导出,以导出XML架构。在文本编辑器中打开此文件,您可以看到他们如何声明他们的标签ID。

1)我认为你在getVisible回调中遇到的麻烦是,无论你如何标记你的XML,如果有人在你之后加载了一个加载项,它就会覆盖你所做的任何事情&# 39;完成了。以下内容来自Fluent Ribbon for Developers FAQ(http://msdn.microsoft.com/en-us/library/office/aa722523%28v=office.12%29.aspx#a16c7df5-93f3-4920-baa8-7b7290794c15_FAQ )

  

当两个加载项尝试重新使用相同的内置控件时会发生什么?   尝试重新调整控件的最后一个加载项成为活动加载项。

现在我还没有比这更进一步,但是如果你可以将这个电路板架构导入/导出到Office中,那么如果你能找到这个导入的地方,也许你可以手动覆盖它VBA使用的是filescripting对象。显然只有它被存储为文本。有点远,但值得进一步看?祝你好运!

答案 1 :(得分:1)

PowerPivot选项卡是COM加载项。要查看它的progID和其他COM加载项,请使用:

Sub ListCOMAddins()
Dim lngRow As Long, objCOMAddin As COMAddIn
lngRow = 1
With ActiveSheet
      For Each objCOMAddin In Application.COMAddIns
         .Cells(lngRow, "A").Value = objCOMAddin.Description
         .Cells(lngRow, "B").Value = objCOMAddin.Connect
         .Cells(lngRow, "C").Value = objCOMAddin.progID
         lngRow = lngRow + 1
      Next objCOMAddin
End With
End Sub`

在我的例子中,PowerPivot选项卡的progID是“Microsoft.AnalysisServices.Modeler.FieldList”。所以要关闭标签使用:

Private Sub Workbook_Open()

   Application.COMAddIns("Microsoft.AnalysisServices.Modeler.FieldList").Connect = False

End Sub