在 vsto C# 中,复制(不粘贴)一个范围时,如何知道这个范围(row/col/rect 信息)?

In vsto C#, when copying(no pasting) a range, how to know this range(row/col/rect info)?

示例 excel 2013 年, 我 select 范围 A1:C3 和 ctrl-c 或右键单击复制。 注意会有一个动画围绕这个范围移动,这意味着你刚刚复制了它。

现在我只想在我的代码中得到这个范围。

我刚刚在 windows 消息中勾选了复制发明。我怎样才能得到这个范围? 请帮助。

示例代码:

private override onCopy(Excel.Range source){
    //...
    base.onCopy(source);


    //Now I can get the source range when copy happens.
    //But in vsto, there is no such method.
    //Help me to work around
}

您可以使用 Selection 对象来获取当前选择。但它可能 return 另一种选择,而不仅仅是复制。

要获取复制的 Selection 对象,您需要设置键盘挂钩以拦截 Ctrl+C 键盘按钮and/or重新调整功能区控件的用途。

请参阅 Using shortcut keys to call a function in an Office Add-in 以开始使用 Windows Hooks。

很可能重新调整功能区控件的用途就足够了(上下文菜单使用功能区 UI)。有关详细信息,请参阅 Temporarily Repurpose Commands on the Office Fluent Ribbon