[算表] VBA執行效率 excel

看板Office作者 (蛤)時間6年前 (2019/04/12 08:32), 6年前編輯推噓2(207)
留言9則, 5人參與, 6年前最新討論串1/1
各位好,我想請問,我有一段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 是否這個也有影響? 我嘗試過先整理資料再另存,沒有改善 不太確定還有可能是什麼原因,請教各位高手了 感謝 ----- Sent from JPTT on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.9.72.99 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1555029128.A.AAA.html ※ 編輯: thunderclap (101.9.72.99), 04/12/2019 08:36:22

04/12 10:04, 6年前 , 1F
個人覺得,有什麼原因也要測試原po的檔案才會比較清楚
04/12 10:04, 1F

04/12 14:03, 6年前 , 2F
ScreenUpdating=false試試看?
04/12 14:03, 2F

04/12 14:05, 6年前 , 3F
另外直接在A欄一次填入公式重整後複製貼上值也可以試試
04/12 14:05, 3F

04/12 14:05, 6年前 , 4F
,就不需要跑迴圈。
04/12 14:05, 4F

04/12 14:48, 6年前 , 5F
也就是看起來沒什麼會特別佔空間的部分得直接看過檔
04/12 14:48, 5F

04/12 14:49, 6年前 , 6F
案,我再測試看看好了 updating false似乎一樣
04/12 14:49, 6F

04/12 19:28, 6年前 , 7F
因為第四步驟大量讀取Range內容,可以試試看把資料存在Arr
04/12 19:28, 7F

04/12 19:28, 6年前 , 8F
ay裡再一次寫入
04/12 19:28, 8F
※ 編輯: thunderclap (111.248.103.102), 04/12/2019 20:51:16

04/13 19:52, 6年前 , 9F
4跑迴圈貼會耗時,應該可以用.copy的方式直接貼近來
04/13 19:52, 9F
文章代碼(AID): #1Shzo8gg (Office)