2012-12-05 30 views
3

我正在修改Excel文件的功能區,隱藏所有默認和上下文選項卡,但只顯示我自己的選項卡。但是,一旦安裝了帶有自己的選項卡的加載項,這些選項卡仍然顯示,因爲我不知道如何解決它們。隱藏MS Office功能區中的加載項選項卡(特別是PowerPivot選項卡)

我知道你可以使用<ribbon startFromScratch="true">刪除所有標籤,但我需要將它們留在原地(我實際上使用getVisible回調來隱藏它們,但將它們顯示給Admin)。

因此,以下幾個問題:

  1. 有什麼辦法申請不知道所有的選項卡的「默認」 getVisible回調(我猜的答案是否定的)
  2. 我怎樣才能弄清楚tabIDs其他加載項標籤
  3. 鑑於PowerPivot越來越普遍(特別是在Excel 2013中),此選項卡的tabID是什麼?

回答

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,它都會覆蓋您所做的任何事情。以下內容來自Fluent Ribbon for Developers FAQ(http://msdn.microsoft.com/zh-cn/library/office/aa722523%28v=office.12%29.aspx#a16c7df5-93f3-4920-baa8-7b7290794c15_FAQ )

當兩個加載項嘗試重新使用相同的內置控件時會發生什麼? 嘗試重新使用控件的最後一個加載項成爲活動加載項。

現在我還沒有任何進一步的比這個,但如果你可以導入/導出這款主板架構到Office然後如果你可以在其中找到該獲取的導入,也許你可以使用手動覆蓋它在VBA文件腳本對象。顯然只有當它存儲爲文本。遠射的位置,但值得進一步看?祝你好運!

+0

非常感謝CuberChase!導出自定義設置的技巧非常簡潔!我試圖用'visible =「false」隱藏PowerPivot選項卡 - 但得到錯誤消息「80004005 - 不支持在另一個加載項控件上設置屬性」。 :-(我想沒有辦法以編程的方式隱藏其他加載項的標籤,然後呢?! –

+0

不幸的是,我認爲這是有道理的,你不能混淆你代碼中的其他人的絲帶。老實說,我認爲能夠看看導出的功能區的xml是該功能的一個意想不到的結果,如果我想出了一個辦法,我會回到這裏:) – CuberChase

+0

錯誤! ;-)不,你說得對,它確實有道理。謝謝你的幫助!!! –

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選項卡的進程id是「Microsoft.AnalysisServices.Modeler.FieldList」。所以要關閉標籤使用:

Private Sub Workbook_Open() 

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

End Sub 
相關問題