Open XML SDK - 以编程方式将宏添加到Word 2007文档中

时间:2010-12-21 12:51:26

标签: vsto ribbon openxml-sdk ribbon-control

我尝试按照本文所述的手动方法在Word 2007文档中动态添加新的自定义功能区: - http://msdn.microsoft.com/en-us/library/aa338202(v=office.12).aspx

本文指定以下内容: -

a)创建一个名为customUI.xml的XML文件,其中包含要显示的元素 在选项卡中,将其放在名为customUI的文件夹中。

b)将Word 2007文档重命名为.zip。将上述“customUI”文件夹添加到zip文件中。

c)将以下关系添加到.zip文件中的“_rels / rels”文件中: -

<Relationship Type="http://schemas.microsoft.com/office/2006/
  relationships/ui/extensibility" Target="/customUI/customUI.xml" 
  Id="customUIRelID" />

我们是否有一些代码示例使用OpenXML SDK实现相同的目标?例如,如何将“RibbonExtensibilityPart”(包含功能区XML)添加到文档中?

编辑: -

这就是我做上述步骤的方法: -

 string documentFileName = <path of the docx file>;
  string ribbonXml        =  <path of the ribbon XML file>;
 using (WordprocessingDocument myDoc = WordprocessingDocument.Open(documentFileName, true))
 {
   MainDocumentPart mainPart = myDoc.MainDocumentPart;

   if (myDoc.GetPartsCountOfType<RibbonExtensibilityPart>() > 0)
      myDoc.DeletePart(myDoc.GetPartsOfType<RibbonExtensibilityPart>().First());

   RibbonExtensibilityPart ribbonExtensibilityPart = myDoc.AddNewPart<RibbonExtensibilityPart>();
   ribbonExtensibilityPart.CustomUI = new DocumentFormat.OpenXml.Office.CustomUI.CustomUI(File.ReadAllText(ribbonXML));

   myDoc.CreateRelationshipToPart(ribbonExtensibilityPart);
 }

我可以看到带有元素的新功能区。 但是,我在功能区中有按钮,我想在这些按钮上添加句柄操作。以下是我的Ribbon XML的样子: -

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="CustomTab" label="My Tab">
        <group id="MyGroup" label="My Group" >
          <button id="Button1" label="My Large Button" 
            size="large"/>
          <button id="Button2" label="My Normal Button" 
            size="normal" *onAction="ThisDocument.MyOtherButtonMacro"* />
        </group >
      </tab>
    </tabs>
  </ribbon>
</customUI>

看一下“ onAction =”ThisDocument.MyOtherButtonMacro “。我知道我可以在文档中编写宏函数。但是,因为自定义功能区将在服务器端动态添加,我不确定如何动态添加宏。有人可以帮忙吗?

0 个答案:

没有答案