excel 2007内存限制

我想问问Excel 2007使用的内存是否真的没有限制?

微软的规范说没有限制

我想validation它,但我失败了

我的testing环境是:Windows7 64Bit,4G Ram,使用的内存不多

这是我所尝试过的,

创build大整数数组。 这只能使用1G Ram。 失败 – >提示OOM错误创build大string数组,插入1000长度string,使用1.9G Ram。 失败 – >提示string空格

在工作表中创build1Million * 10列数据,不断复制它。 使用1.9G公羊。 失败 – >提示一些随机错误。

我的问题是,是否真的没有内存限制或我真的用完了我的电脑上的所有可用内存?

Excel内存限制因版本而异。 Excel 2007仅限于理论上2 GB的虚拟内存,但实际上由于内存碎片问题等原因通常无法使用。请参阅http://www.decisionmodels.com/memlimitsc.htm更多细节。

要找出有多less内存可用于VBA复制/粘贴下面的代码,并调用availableMemoryInMB()

 Function allocateMB(intNumMB As Integer) As Boolean On Error Resume Next Dim a As Variant ReDim a(intNumMB, 256, 256) As Variant 'intNumMB x 256 x 256 x 16 bytes = intNumMB MB allocateMB = (Err.Number = 0) Err.Clear Erase a End Function Function availableMemoryInMB() As Integer Dim intLow As Integer, intHigh As Integer, intTest As Integer intTest = 1: intHigh = 0 Do If allocateMB(intTest) Then intLow = intTest If intHigh = 0 Then intTest = intTest * 2 Else intTest = (intLow + intHigh) / 2 End If Else intHigh = intTest intTest = (intLow + intHigh) / 2 End If Loop Until intHigh - intLow <= 1 And intHigh > 0 availableMemoryInMB = intLow End Function 

代码的执行需要2-20秒。 在64位Excel版本中,VBA可以使用几GB的内存,而在32位版本的Excel中可以使用大约半个GB的内存。