2016-03-30 17 views
2

私自身の目的でCustomUIユーティリティのバージョンを開発しています。私はOffice 2007用の元のCustomUI要素を設定するMSDNのコードから始めましたが、このバージョンではバックステージを実装する方法が見つかりません。Excel 365用のCustomUIにPopulate Backstage

code taken from MSDNは次のとおりです。

Using document As SpreadsheetDocument = SpreadsheetDocument.Open(fileName, True) 
    ' You can only have a single ribbon extensibility part. 
    ' If the part doesn't exist, add it. 
    Dim part = document.RibbonExtensibilityPart 
    If part Is Nothing Then 
    part = document.AddRibbonExtensibilityPart 
    End If 
    part.CustomUI = New CustomUI(customUIContent) 
    part.CustomUI.Save() 
End Using 

customUIcontent<backstage>タグ(xmlns= "http://schemas.microsoft.com/office/2009/07/customui"を使用して)とXMLが含まれている場合、このコードは失敗します。

元のCustomUIユーティリティを使用して、サンプルのバックステージをブックに挿入しました。 XMLを調べると(時計の中で)、追加の要素RibbonAndBackstageCustomizationsPartが見つかります。元のコードを複製しようとしましたが、RibbonAndBackstageCustomizationsPartRibbonExtensibilityPartに置き換えましたが、これは part.CustomUI = New CustomUI(customUIContent)行で失敗しました。

私のサンプルのXMLコンテンツをさらに調べると、タグに"mso14"の接頭辞が付いている元のXMLの亜種を持つinnerXMLとouterXMLが見つかりました(おそらく、CustomUIがCustomUI12.xmlとは別にCustomUI14.xmlを表示している理由です) 。

RibbonAndBackstageCustomizationsPart要素を自分のXMLに埋め込む方法については、広範に検索しましたが、正しい構文を見つけることができませんでした。

誰でも私にRibbonAndBackstageCustomizationsPart要素を設定する適切な方法を教えてもらえますか?

私はVS 2012

多くのおかげでオープンXML 2.5 SDKを使用しています。

P .:私は今日この問題をericwhite.comに掲載しました。より多くの視聴者を得るためにここで繰り返す。 :-)

+0

あなたはあなたがについて話XMLスニペットだけでなく、正確なエラーメッセージが含まれている必要があり取得する。 – Tomalak

答えて

0

OfficeのカスタムUIには2つのバージョンがあります。最初のバージョンは名前空間http://schemas.microsoft.com/office/2006/01/customuiの下にあり、2番目のバージョンは新しい名前空間http://schemas.microsoft.com/office/2009/07/customuiの下にあります。

バックステージビューはOffice 2010から導入されており、新しい名前空間を使用する必要があります。また、Open XML 2.5では、RibbonAndBackstageCustomizationsPartを使用して新しいバージョン名空間にリボンXMLを挿入する必要があります。ここで

あなたの参照のためのOffice Backstageビューでタブを追加するオープンXML 2.5を使用したサンプルです:

public void Main() 
    { 

     string docName = @"C:\book1.xlsx"; 
     string customUIContent = "<customUI xmlns=\"http://schemas.microsoft.com/office/2009/07/customui\">" 
           + "<backstage>" 
           + "<tab id = \"customTab1\" label = \"customTab1\" ></tab>" 
           + "</backstage>" 
           + "</customUI >"; 
     using (SpreadsheetDocument document = SpreadsheetDocument.Open(docName, true)) 
     { 
      if (document.RibbonAndBackstageCustomizationsPart == null) 
      { 
       document.AddRibbonAndBackstageCustomizationsPart(); 
       document.RibbonAndBackstageCustomizationsPart.CustomUI = new DocumentFormat.OpenXml.Office2010.CustomUI.CustomUI(customUIContent); 
       document.RibbonAndBackstageCustomizationsPart.CustomUI.Save(); 
      } 
     } 
    } 
+0

ありがとう!新しい名前空間を反映するようにXMLを変更しましたが、変更ライブラリのバージョンに気づいていませんでした。とても有難い。 – Nick

関連する問題