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
最佳答案
名称集合是 Excel 的一项功能,已经存在很长时间了。 Excel 2003 中的公式长度限制为 1,024 (2^10),但 Excel 2007 中的公式长度限制已扩展到 8,192 (2^13)。
这两篇文章介绍了 Excel 2003 和 Excel 2007 的主要大小限制:
Excel 2003 specifications and limits
Excel 2007 specifications and limits
为了解决这个问题,我会看看 Excel.Worksheet.CustomProperties收藏。我相信 Worksheet.CustomProperties 项目大小仅受内存限制。您必须在您的系统上进行测试,可能还需要在不同版本的 Excel 中进行测试,但我认为您应该能够轻松保存超过 10,000,000 个字符。
但是,在使用 Worksheet.CustomProperties 集合时,您将负责自己将数组与字符串相互转换,这与 Names 集合不同,Names 集合可以自动将数组转换为字符串。
关于memory - Excel 2007 工作簿名称大小限制是多少?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/644429/