2009-03-13 2 views
3

Названия книг в Excel 2007 должны быть ограничены по размеру только памятью, но это, похоже, не так. В конце концов, массив, сохраненный для имени, станет достаточно большим, чтобы при попытке сэкономить (перефразировать): «одна или несколько формул в этой книге превышают ограничение на 8192 символов, пожалуйста, сохраните как двоичный файл».Что такое ограничение по размеру книги в Excel 2007? Зачем?

ОК, а затем сохраните его в формате двоичного файла ... но даже здесь массив может стать достаточно большим, чтобы сделать файл невозможным.

Что дает? Как имена хранятся в 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

Названия коллекции является особенностью 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, которая может автоматически преобразовать ваш массив в строку.

+0

Эти ссылки не работают, вы знаете, какие будут правильные новые ссылки? –

Смежные вопросы