Excel 2007工作簿名称大小限制是什么?为什么?

3
在Excel 2007中,工作簿名称的大小理论上只受内存限制,但实际情况并非如此。最终,保存为名称的数组会变得足够大,以至于在尝试保存时会出现以下提示:“此工作簿中的一个或多个公式大于8192个字符的限制,请保存为二进制文件。”
好吧,那么将其保存为二进制文件格式……但即使在这里,数组也可能变得足够大,使得保存文件变得不可能。
怎么回事?Excel中的名称是如何存储的,导致出现这种情况?这与安装有关吗?有没有办法解决这个问题?
使用下面的代码自行尝试。它将完美运行,并且名称将被正确填充,但保存将会给你带来一些麻烦的错误。3351个元素太多了,但3350个可以正常保存:
Public Sub TestNameLimits()
    Dim v As Variant
    ReDim v(1)

    Dim index As Integer

    For index = 1 To 3351
        ReDim Preserve v(index)
        v(index) = "AAAA"
    Next

    Call Application.Names.Add("NameLimit", v)

End Sub
1个回答

2
“Names”集合是 Excel 的一个长期存在的功能。Excel 2003 版本中的公式长度限制为1,024(2^10),但在 Excel 2007 中扩展到了8,192(2^13)。
这两篇文章描述了 Excel 2003 和 Excel 2007 的主要大小限制: Excel 2003 规格和限制 Excel 2007 规格和限制 为了解决这个问题,我建议查看 Excel.Worksheet.CustomProperties 集合。我相信工作表的 CustomProperties 项的大小仅受内存限制。您需要在您的系统上测试此功能,并在不同版本的 Excel 中进行测试,但我认为您应该能够轻松保存超过 10,000,000 个字符。
然而,当使用 Worksheet.CustomProperties 集合时,您需要自己将数组转换为字符串并进行转换,而不像 Names 集合那样可以自动将您的数组转换为字符串。

这些链接已经失效了,你知道正确的新链接是什么吗? - Rowland Shaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接