在Excel中使用剪贴板复制粘贴(VSTO代码)可冻结其他Microsoft Office应用程序
本文关键字:代码 冻结 其他 应用程序 Office Microsoft VSTO Excel 剪贴板 复制 | 更新日期: 2023-09-27 18:29:14
操作系统:Microsoft Windows SP1(64位)
Office套件:Microsoft Office 2010
.Net框架:4.0
主题:当excel插件代码运行时,Microsoft应用程序套件(Word、Outlook)在时间段内没有响应
详细信息:我们已经为excel应用程序编写了基于VSTO(C#)的插件。此加载项用于刷新当前工作表中的数据。
点击"刷新"按钮会发生以下事件步骤
•通过传递一些元数据来下载文件,从而调用内部web服务
•文件已下载并存储在windows Temp文件夹中。
•执行VSTO代码,使用剪贴板复制/粘贴将数据从下载的工作表复制到当前工作表。数据是逐行复制的。
在任何时间点,剪贴板中都会有一行数据。行和列的数量也因请求而异。
问题:虽然刷新功能按预期工作,但我们遇到了其他Office套件应用程序(Word、Outlook)的问题。
由于时间片刷新正在运行,所有Office应用程序套件都将停止响应。
有人能帮上忙吗?
我认为您无法控制其他办公套件应用程序。但你可以做的是,尝试减少刷新按钮的时间片通过使用不同的概念,如
•通过将一些元数据传递给下载文件
•文件已下载并存储在windows Temp文件夹中。
对于以上两点,我不知道你们是否使用了单独的线程?如果不使用单独的线程。
在将数据从一张图纸复制粘贴到另一张图纸时,也可以使用一些优化技巧。
以下是一些优化vba/vsto代码的技巧
http://tchhabhaiya.blogspot.in/2012/06/17-ways-to-optimize-vba-code-for-faster.html
我认为如果你还没有使用过这个,下面的代码会对你有很大帮助。
Application.ScreenUpdating = False //To Turn Off at the start of code.
Application.ScreenUpdating = True //To Turn on at the end of the code.