簡體   English   中英

我們如何使用 Open XML SDK for Office 創建 MS WORD 插件功能區

[英]How can we create a MS WORD Add-in ribbon uisng Open XML SDK for Office

MS WORD一個VSTO項目中,我使用VS2017 - Update 1809WORD 2010-2016創建了一個自定義 Office 功能區 - 帶有一個按鈕,如下所示。 問題:如何在類似的VS2017 - Open XML for Office項目中使用Open XML SDK 2.5 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.";
        }

更新

動機:我為 MS WORD 創建了一個 VSTO 加載項,它在 WORD 文檔的頂部功能區中創建了一個自定義選項卡。 該選項卡有多個控件(按鈕、復選框等),它們通過各自的回調執行各種操作(類似於我上面的帖子中顯示的示例)。 我想轉換是VSTO加載項為Office做同樣的使用Open XML SDK,因為VSTO外接程序不能被發布到Microsoft Stores的解釋在這里 並且新的 office 插件功能不支持我的舊 VSTO 插件所支持的某些功能。

不幸的是,您的想象是不可能的。

按照設計,Ribbon XML 鏈接到同一“容器”中的代碼。 存儲在 Office 文檔中的功能區 XML必須與同一文檔的 VBA 代碼中的回調一起使用。 如果要使用 Office Open XML 將 Ribbon XML 插入 Word 文檔,則它使用的代碼必須位於同一文檔的 VBA 組件中。 (還值得注意的是,VBA 組件不是 XML 格式,而是二進制格式,因此無法使用 Open XML 生成 - 只能導入。)

出於同樣的原因,由 COM 加載項(基於 IDTExtensibility2,無論是 VSTO 還是任何其他 COM 加載項)加載的 Ribbon XML 必須與該加載項中的代碼一起使用。 Ribbon 的回調不能在任何其他“容器”中,盡管回調代碼可以調用“容器”之外的代碼。 (注意 VSTO 功能區不能被 VBA 代碼調用......並且功能區存儲在任何文檔中。)

使用 VBA 和 COM 加載項中的 Ribbon XML,可以通過為它們分配Q id 來共享Ribbon 控件。 對於共享控件,只要知道 id,任何容器中的代碼都可以引用它們。

Office JS 加載項中定義的功能區也依賴於同一容器內的代碼。 但是,Office JS 模型(還沒有?)支持共享控件的概念。

結論:與 COM 對象模型相比,Office JS 加載項仍然非常有限,無論是 Office 應用程序的對象模型還是功能區(Office JS 術語中的“命令”)。 該功能正在穩步擴展,最近重點是 Excel。 其他事情(希望)會隨之而來。

如果有一個特定的功能應該 - 在您看來 - 具有非常高的優先級,您應該轉到 UserVoice 進行 Office 開發。 如果已經提出請求,請對其進行投票。 如果找不到,請創建一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM