我们如何创建使用的Office Open XML SDK中的MS Word加载色带

问题描述 投票:2回答:1

使用VSTO如下的MS WORD - 在WORD 2010-2016一个VS2017 - Update 1809项目,我创建了一个自定义的Office功能区 - 一个按钮。问:我怎样才能达到完全使用Open XML SDK 2.5 for Office类似的VS2017 - Open XML for Office项目一样吗?我还没有发现这样的例子在线:

丝带VSTO例如:

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
  <ribbon>
    <tabs>
      <tab idMso="TabAddIns" label="my Ribbon Tab">
        <group id="ContentGroup" label="Content">  
          <button id="textButton" label="Insert Text" screentip="Text" onAction="OnTextButton"  
             supertip="Inserts text at the cursor location."/> 
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

在上述带按钮的回调方法:

public void OnTextButton(Office.IRibbonControl control)
        {
            Word.Range currentRange = Globals.ThisAddIn.Application.Selection.Range;
            currentRange.Text = "This text was added by the Ribbon.";
        }

更新:

动机:我创建了一个VSTO加载在MS Word创建的Word文档的顶部功能区自定义选项卡。的选项卡具有多个控件执行经由它们各自的回调的各种动作(类似于我的交上面示出的例子)(按钮,复选框等)。我想转换是VSTO插件做同样使用的Open XML SDK的办公室,因为VSTO加载项不能被发布到Microsoft Stores作为解释here。而新的Office加载功能不支持某些功能,我的遗产VSTO外接程序。

c# vsto office-js openxml-sdk ribbonx
1个回答
1
投票

你可以想象是不幸的是没有可能的。

在设计上,功能区XML链接到同一个“容器”的代码。存储Office文档中区XML必须回调在同一文档的VBA代码工作。如果你使用的Office Open XML插入功能区XML到Word文档,然后它的工作原理与代码必须在同一个文档中的VBA组件。 (这也是值得注意的是,VBA组件不是XML格式,但二进制信号,因此无法产生使用的Open XML - 只有进口)

同样的道理,区XML由COM加载项加载(基地上了IDTExtensibility2,是否VSTO或任何其他COM加载项),必须在外接使用代码。功能区的回调不能在任何其他的“容器”,虽然回拨代码可以调用的“容器”之外的代码。 (请注意,VSTO色带无法通过VBA代码调用......和色带没有任何存储文档中)。

随着VBA和COM功能区XML插件有可能通过分配他们Q ID共享区控件。对于共享的控制,在任何集装箱代码可以参考它们,只要ID是已知的。

在Office JS定义的丝带加载项也取决于代码是相同的容器内。该办公室JS模型不(没?),但是,与共享控制的概念工作。

结论:办公JS外接仍然非常相比,COM对象模型的限制,这是否是Office应用程序的对象模型或(在Office JS说法“命令”)的功能区。该功能正在稳步扩大,最近重点在Excel中。其他的事情会(希望)跟随。

如果有应该一个特定的功能 - 在您看来 - 有一个非常高的优先级,你应该去的UserVoice的Office开发。如果请求已经作出,上投它。如果你不能找到它,创建一个。

© www.soinside.com 2019 - 2024. All rights reserved.