【发布时间】: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 选项卡的信封和标签字段将不再起作用。