我在VBA中廣泛使用了32位2013 Excel。我已禁用硬件圖形加速和COM加載項,但我仍然努力解決以下問題:Excel VBA:內存超過第二次導入的限制
我導入另一個大型工作簿的格式與單元格但沒有公式(〜3MB Excel文件)的內容到有問題的Excel工作簿。第一次嘗試 - 當內容尚未導入時 - 導入成功。我導入通過VBA類似於下面的代碼內容:
Application.Workbooks(F_Home).Activate
Workbooks(F_Home).Sheets(Sheet1).Visible = xlSheetVisible
...
Application.Workbooks(F_Source).Activate
Workbooks(F_Source).Sheets(S_Source).Cells.Copy Destination:=Workbooks(F_Home).Sheets(Sheet1).Cells
Application.Workbooks(F_Home).Activate
F_Home是有問題的Excel工作簿和F_Source與我們導入的內容的工作簿在這樣做時第一次它的工作原理,然後。我保存該文件並關閉它,然後重新打開該文件,然後再次嘗試。在第二次嘗試導入內容時(當內容已經導入時),F_Home工作簿在將F_Source內容複製到的行上崩潰,出現內存不足錯誤(沒有足夠的內存來完成此操作...) F_Home。
使用Process Explorer我發現Excel進程的虛擬內存大小通常在600mb-700mb左右,但是當我們運行VBA腳本第二次導入內容時,虛擬內存大小突然跳到4GB(這不會發生在第一次,其中保持在600mb - 700mb範圍內)。我應該如何解決這個問題?我無法做一個解決方法,比如在第二次導入內容之前保存文件,因爲使用了該文件的時間戳,並且通過VBA保存文件會使某些用戶感到困惑。
謝謝你的幫助。
工作簿上沒有公式要導入的內容 - 只是數據。 – haans
您的問題來自您複製1048576 * 16384單元的事實。你知道那有多大?你真的需要這樣做嗎?您只能複製其中包含數據的範圍,而且速度更快,計算成本更低。 – Masoud
另外,如果沒有公式,請考慮將它們分配給範圍而不是複製/粘貼。 – Masoud