在vsto C#中,当复制(不粘贴)一个范围时,如何知道这个范围(行/列/矩形信息)?

时间:2015-07-18 03:03:23

标签: c# excel excel-vba vsto vba

excel 2013中的示例, 我选择范围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
}

1 个答案:

答案 0 :(得分:1)

您可以使用Selection对象获取当前选择。但它可能会返回另一个选择,而不仅仅是复制。

要获取复制的Seletion对象,您需要设置一个键盘钩子来拦截Ctrl + C键盘按钮和/或重新设置功能区控件。

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

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