2012-10-23 37 views
2

由於大量數據(集合中超過2,000,000個條目),Excel會以「內存不足錯誤」(代碼7)終止我的VBA程序。我知道VBA不是處理如此多數據的正確語言,但是有沒有辦法增加Excel用來運行VBA程序的內存?我精確它不是一個堆棧溢出,堆呼叫的數量限制爲10Excel中的內存不足錯誤

由於提前, 馬克

回答

4

取決於你使用的Excel版本。早於Excel 2007的版本往往具有相當有限的內存容量。
32位Excel 2007及更高版本在理論上可以使用總計高達2GB,但在實踐中,VBA經常難以獲得超過約512MB的數據。
64位Excel 2010及更高版本要好得多:我成功使用了高達4 GB的VBA內存。

它可能使用字典而不是集合會更有效率的內存,但我沒有測試它。

+0

Charles,在閱讀你的答案時,你回答了一個讓我困擾了好幾個月的問題......謝謝! –

+0

感謝您的反饋,查爾斯,這些數字是非常有趣的知道!就我而言,我在Vista 64位操作系統上使用Excel 2007。關於字典,你說得對,但問題是每次添加元素時都需要使用一個鍵,這在我的情況下並不總是相關的。在考慮減少內存使用量時,我發現許多元素在我的收藏中都很相似。在C++中,我可以存儲指向同一個字符串的指針。但是我怎麼能在VBA中做到這一點? –

+0

我不會建議嘗試在VBA中實現字符串池,但是您可以始終使用XLL接口來訪問C++ –