如何使用vba加速复制/粘贴到共享工作簿中

时间:2014-02-11 18:34:32

标签: excel vba excel-vba

我有一个在共享工作簿上运行的宏。它从未共享的工作簿复制/粘贴到共享工作簿,关闭未共享的工作簿,然后执行一系列查找。我发现在共享时,更新会在执行非共享工作簿的打开/复制/粘贴/关闭时挂起。有什么方法可以加快速度吗?

我设置了displayupdate = false和calculate = manual,这确实有助于查找,但它没有解决打开/复制/粘贴/关闭操作的延迟。有什么建议吗?

我知道共享工作簿不是最好的,但我的用户对此非常热衷......

2 个答案:

答案 0 :(得分:1)

执行:Application.ScreenUpdating = false我觉得这对我的工作很有帮助,我相信与displayupdates不同。另外,请确保.activate尽可能少地发生。每个单元格或表单激活是一个通常不需要发生的处理指令。相反,如果可能,请使用offset(rows, Columns),或者查看是否可以引用工作表和范围Sheets(1).Range("Cell")。检查编码不好的if / loop是否正常。如果可能,请用if替换多个elseif

修改

我是从其他网站获得的 -

If ActiveWorkbook.MultiUserEditing Then
ActiveWorkbook.ExclusiveAccess
End If

我还没有测试过,但也许你可以在复制/粘贴之前调整它以取消共享工作簿?

答案 1 :(得分:0)

如果您认为在共享工作簿打开时open/copy/paste/close处理时间呈指数级增长是正确的,但除此之外只是略有增加,那么我认为提高性能的最佳方法是{{将所有未共享的工作簿转换为另一个将作为缓冲区的未共享工作簿。然后使用您的代码将缓冲区中的共享工作簿和copy/paste代码打开到所述共享工作簿中。

如果挂起发生在copy/paste而不是open/close中,这将有所帮助 - 我怀疑是这种情况。