看板 Office 關於我們 聯絡資訊
各位好,我想請問,我有一段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
soyoso: 個人覺得,有什麼原因也要測試原po的檔案才會比較清楚 04/12 10:04
newton41: ScreenUpdating=false試試看? 04/12 14:03
newton41: 另外直接在A欄一次填入公式重整後複製貼上值也可以試試 04/12 14:05
newton41: ,就不需要跑迴圈。 04/12 14:05
thunderclap: 也就是看起來沒什麼會特別佔空間的部分得直接看過檔 04/12 14:48
thunderclap: 案,我再測試看看好了 updating false似乎一樣 04/12 14:49
newacc: 因為第四步驟大量讀取Range內容,可以試試看把資料存在Arr 04/12 19:28
newacc: ay裡再一次寫入 04/12 19:28
※ 編輯: thunderclap (111.248.103.102), 04/12/2019 20:51:16
smallstar78: 4跑迴圈貼會耗時,應該可以用.copy的方式直接貼近來 04/13 19:52