2010-09-24 69 views
0

我在Excel中遇到了一个非常奇怪的问题。我已经覆盖了CTRL + C和CTRL + V键,并且在复制时,我将自定义数据对象放在包含Excel格式和我的自定义格式的剪贴板上。办公剪贴板需要时间来显示更改

我将我的数据复制到剪贴板,它被复制没有任何问题。我也可以在Office剪贴板中看到它。现在我从外部Excel(从记事本)复制一些文本,并尝试将其粘贴到Excel中,但Excel粘贴从Excel工作表复制的以前的数据。我正在粘贴使用Worksheet.Paste(...)方法。

粘贴多次后,Excel开始粘贴新数据,但它不是固定的。有时我根本没有看到新的数据,尽管Windows剪贴板查看器和Office剪贴板在我从记事本复制后都立即显示新数据。

任何想法为什么Office需要时间粘贴这些新数据?

+0

嗯,你为什么会重写这种基本的热键?几乎在任何情况下我都能想到,这只会让最终用户感到困惑,并且几乎没有任何好处。 – PowerUser 2010-09-24 13:41:22

+0

我的加载项创建并处理自己的工作表和自定义数据。 CTRL + C和CTRL + V处理程序让加载项处理自定义数据。一个例子是链接到单元格的图片的复制粘贴。 – A9S6 2010-09-24 13:45:02

+0

你正确关闭剪贴板吗?你在用什么编程语言?是否有可能使用.NET并关闭对象的终结器(“析构函数”)中的剪贴板? – 2010-09-24 13:48:46

回答

0

Excel宁愿从自己的内部缓冲区粘贴,而不是剪贴板,所以它只会看剪贴板,如果它有理由相信它已经改变。如果您干扰剪贴板通知链,则可能不知道更新。或者它可能只检查剪贴板更新,如果它失去/获得焦点。即如果Excel仍然有焦点并且你的附加组件在后台向剪贴板复制了一些内容,那么没有理由认为它需要查看剪贴板。

+0

是的,有一点我干涉剪贴板链,但我确实以推荐的方式调用下一个剪贴板查看器。我从记事本复制,所以Excel会失去焦点。有没有办法使Excel从剪贴板中选择最新的一个或发送剪贴板数据已更改的通知? – A9S6 2010-09-26 04:27:35