如何使用 VBA 加快复制/粘贴到共享工作簿的速度



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

我已经设置了显示更新=假和计算=手动,这确实有助于查找,但它没有解决打开/复制/粘贴/关闭操作的延迟。有什么建议吗?

我知道共享工作簿不是最好的,但我的用户热衷于它......

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

编辑

我从另一个网站得到这个 -

If ActiveWorkbook.MultiUserEditing Then
ActiveWorkbook.ExclusiveAccess
End If

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

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

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

最新更新