Что такое ограничение на размер имени книги Excel 2007? Зачем? - PullRequest
3 голосов
/ 13 марта 2009

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

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

Что дает? Как имена хранятся в Excel, что это происходит? Это что-то особенное для установки? Есть ли способ обойти это?

Попробуйте сами с кодом ниже. Он будет работать отлично, и имя будет правильно заполнено, но сохранение даст вам ошибки somenasty. 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 Ответ

1 голос
/ 16 марта 2009

Коллекция имен - это особенность Excel, которая существует уже очень давно. Ограничение длины формулы в Excel 2003 составляет 1024 (2 ^ 10), но было расширено для Excel 2007 до 8,192 (2 ^ 13).

Эти две статьи описывают основные ограничения по размеру для Excel 2003 и Excel 2007:

Спецификации и ограничения Excel 2003

Спецификации и ограничения Excel 2007

Чтобы решить эту проблему, я бы взглянул на коллекцию Excel.Worksheet.CustomProperties . Я считаю, что размер элемента Worksheet.CustomProperties ограничен только памятью. Вам придется проверить это в своей системе и, возможно, в различных версиях Excel, но я думаю, что вы легко сможете сэкономить более 10 000 000 символов.

Однако при использовании коллекции Worksheet.CustomProperties вы будете нести ответственность за преобразование массива в строку и из нее самостоятельно, в отличие от коллекции Names, которая может автоматически преобразовывать ваш массив в строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...