【问题标题】:Hide add-in tabs from MS Office ribbon (esp. PowerPivot tab)从 MS Office 功能区隐藏加载项选项卡(尤其是 PowerPivot 选项卡)
【发布时间】:2012-12-05 09:39:17
【问题描述】:

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

我知道您可以使用 <ribbon startFromScratch="true"> 删除所有选项卡,但我需要将它们保留在原处(我实际上使用 getVisible 回调对用户隐藏它们,但将它们显示给管理员)。

所以,以下问题:

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

【问题讨论】:

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


    【解决方案1】:

    这是一个很棒的问题,几乎没有关于使用第三方功能区的文档或示例。我已经做了很多挖掘工作,可以帮助你完成大部分你想要的事情。我会回答你的问题有点乱,但这里是。

    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 并打开您感兴趣的插件,转到文件菜单,然后转到选项。选择自定义功能区,然后在顶部窗口的右侧选择自定义功能区:主选项卡。现在取消选中您感兴趣的插件,然后点击底部的 Import/Export 以导出 XML 模式。在文本编辑器中打开这个文件,你可以看到他们是如何声明他们的标签 ID 的。

    1) 我认为您在 getVisible 回调中遇到的问题是,如果有人在您之后加载插件,无论您如何标记 XML,它都会覆盖您所做的任何事情。以下内容来自 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,那么如果您可以找到此 get 的导入位置,也许您可​​以使用文件脚本对象在 VBA 中手动覆盖它。显然,只有当它存储为文本时。有点远射,但值得进一步研究?祝你好运!

    【讨论】:

    • 非常感谢 CubeChase!导出自定义设置的技巧非常巧妙!我只是尝试使用 visible="false" 隐藏 PowerPivot 选项卡 - 但收到错误消息 80004005 - Setting properties on another add-in's controls is not supported。 :-( 我想除了以编程方式隐藏其他加载项的选项卡之外别无他法?!
    • 不幸的是,我认为你不能从你的代码中弄乱其他人的功能区是有道理的。老实说,我认为能够查看功能区的导出 xml 是该功能的意外结果。如果我确实想出了一个方法,我会在这里发帖:)
    【解决方案2】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      相关资源
      最近更新 更多