儘管Excel 2007至少有64位版本的Excel可用,但安裝的主要依然是Microsoft Excel的32位版本。
大多數插件開發人員從來沒有找到證明支持64位Microsoft Office的商業案例,並且在2010年左右的時間裏,Microsoft更改了將64位版本的Office應用到32位版本的建議。
VSTO加載項的可用內存因版本而異,但隨着Excel本身複雜性的增加而下降。
目前,具有1.75 GB的可尋址內存空間,無論是Excel還是.NET CLR加載,您最多可以使用大約250-300 MB的.NET代碼和數據。垃圾收集器在將所有內容都放入可尋址內存空間方面做得非常好,但通常情況下這是不夠的。
通過使用64位Windows版本(現在的普通版本)並向Windows添加更多物理或虛擬內存,可用內存和可尋址內存的數量一般不會得到改善。這是32位地址空間設計的限制。
從2016年5月發佈開始,Microsoft已在Excel.exe的標頭中設置LARGEADDRESSAWARE位。這允許32位版本的Excel就像舊版32位版本的Oracle和其他版本一樣,以解決超過2 GB的內存問題。
knowledge base更多文檔提供該設施的版本。鑑於Excel 2013已經停止,本質上,您應該使用32位新版本的Excel 2016來避免OutOfMemory異常。
對於Office365訂戶,建議切換到包含足夠新的Excel 2016
雖然爲Excel這增加了可尋址存儲器空間到僅3 GB版中的一個信道,它增加的存儲量可用於您的.NET代碼和數據作爲從250-300 MB到1250-1300 MB的VSTO。令人驚訝的因素4-5增加了可用內存空間。
Invantive Control在幫助 - >診斷窗口中顯示可尋址的內存空間。
的Excel非LARGEADDRESSAWARE版本中,它表明:
但LARGEADDRESSAWARE版本中,它表明:
在行動撥出超過2 GB: