【问题标题】:Override Word Paste event - VSTO覆盖 Word 粘贴事件 - VSTO
【发布时间】:2021-08-19 12:28:54
【问题描述】:

我正在开发 Word 自定义功能区栏加载项,我需要覆盖 Word 粘贴事件 并对粘贴范围执行更多操作。我目前的实现如下。

ribbon.xml 文件中,

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load" >
  <commands>
    <command idMso="Paste" onAction="RegenerateIDsAfterPaste"/>
  </commands>
  <ribbon>
    <tabs>
     ........
    </tabs>
  </ribbon>
</customUI>

ribbon.cs 文件中,

public void RegenerateIDsAfterPaste(Office.IRibbonControl control, bool cancelDefault)
{
    Word.Selection selection = Globals.ThisAddIn.Application.Selection;
    Word.Range range = selection.Range;
    range.Paste();
    //more code here
}

在当前的实现中,当我使用 Ctrl+V 将内容粘贴到剪贴板时,它运行良好,并将更改应用到在 RegenerateIDsAfterPaste 方法中实现的粘贴范围。 p>

但是当我尝试通过右键单击 Word 文档并单击下面的第一个按钮将内容粘贴到剪贴板时,RegenerateIDsAfterPaste 方法甚至没有执行。似乎idMso=Paste 不代表此按钮单击。

我在link 中尝试了一些与粘贴相关的其他 idMso 值。但它们都不起作用。

有没有人知道我应该如何修改我的代码,以便它同时适用于Ctrl+V 和“Word 右键单击​​粘贴”。

提前谢谢你。

【问题讨论】:

  • 您可能希望拦截 EditPaste 命令。这可以通过名为 EditPaste 的 vba 过程来完成。见wordmvp.com/FAQs/MacrosVBA/InterceptSavePrint.htm
  • 我们已经尝试过“EditPaste”VBA 程序。它也不适用于 Word 右键单击​​粘贴。此外,当我们使用“EditPaste”命令时,粘贴到 Word Mailings 选项卡的信封和标签字段将不再起作用。

标签: c# xml ms-word vsto


【解决方案1】:

您可以在此处找到官方的 id 列表: https://www.microsoft.com/en-us/download/details.aspx?id=50745

你要找的可能是PasteSourceFormatting

【讨论】:

  • PasteSourceFormatting 无法正常工作。我从提供的列表中尝试了粘贴相关的 id,它们都不适合我。我尝试的是在 标记中添加这一行以及前一行。 &lt;command idMso="PasteSourceFormatting" onAction="RegenerateIDsAfterPaste"/&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
相关资源
最近更新 更多