[算表] VBA执行效率 excel

楼主: thunderclap (蛤)   2019-04-12 08:31:44
各位好,我想请问,我有一段VBA执行到最后速度会非常的慢
不晓得是哪个部分占了太多内存没清除
这段扣做的事情如下
1. 从某3个url自动下载档案并且另存,共有三个档案。
2. 打开已经有的一个template档,把上述三个档案的资料复制贴上到这个template的
第一张sheet
(复制结束都有用application.cutcopymode false)
3. 从template另存一个新的档案x
4. X这个档案里面插入第一栏,用for next循环把第一格的值等于后面每一格以分号相连
(例如A1 = B1;C1;D1....) 这里用的是offset, for i = 1 to 20
档案的本身大概只有700*20格而已,照理说量非常小。
问题出在4这个步骤,看得出来执行到这的时候每秒大概只跑的出两列
也就是我700列得执行超过五分钟
但我如果把同一段扣剪下,改成我手动把X打开再执行
那么这个步骤可以秒杀,因此我想是前面的步骤占了内存?
一开始执行这一整段程式码的档案本身已经有好几个module
是否这个也有影响?
我尝试过先整理资料再另存,没有改善
不太确定还有可能是什么原因,请教各位高手了
感谢
作者: soyoso (我是耀宗)   2019-04-12 10:04:00
个人觉得,有什么原因也要测试原po的档案才会比较清楚
作者: newton41 (Newton)   2019-04-12 14:03:00
ScreenUpdating=false试试看?另外直接在A栏一次填入公式重整后复制贴上值也可以试试,就不需要跑循环。
楼主: thunderclap (蛤)   2019-04-12 14:48:00
也就是看起来没什么会特别占空间的部分得直接看过档案,我再测试看看好了 updating false似乎一样
作者: newacc (XD)   2019-04-12 19:28:00
因为第四步骤大量读取Range内容,可以试试看把资料存在Array里再一次写入
作者: smallstar78 (smallstar)   2019-04-13 19:52:00
4跑循环贴会耗时,应该可以用.copy的方式直接贴近来

Links booklink

Contact Us: admin [ a t ] ucptt.com