Слишком много различных форматов ячеек
Это может случиться и с вами.
Работая с большой книгой в Excel в один совсем не прекрасный момент вы делаете что-то совершенно безобидное (добавление строки или вставку большого фрагмента ячеек, например) и вдруг получаете окно с ошибкой "Слишком много различных форматов ячеек":
Иногда эта проблема возникает в еще более неприятном виде. Накануне вечером вы, как обычно, сохранили и закрыли свой отчет в Excel, а сегодня утром не можете его открыть - выдается подобное же сообщение и предложение удалить все форматирование из файла. Радости мало, согласитесь? Давайте разберем причины и способы исправления этой ситуации.
Почему это происходит
Такая ошибка возникает, если в рабочей книге превышается предельно допустимое количество форматов, которое Excel может сохранять:
- для Excel 2003 и старше - это 4000 форматов
- для Excel 2007 и новее - это 64000 форматов
Причем под форматом в данном случае понимается любая уникальная комбинация параметров форматирования:
- шрифт
- заливки
- обрамление ячеек
- числовой формат
- условное форматирование
Так, например, если вы оформили небольшой фрагмент листа подобным образом:
... то Excel запомнит в книге 9 разных форматов ячеек, а не 2, как кажется на первый взгляд, т.к. толстая линия по периметру создаст, фактически 8 различных вариантов форматирования. Добавьте к этому дизайнерские танцы со шрифтами и заливками и тяга к красоте в большом отчете приведет к появлению сотен и тысяч подобных комбинаций, которые Excel будет вынужден запоминать. Размер файла от этого, само собой, тоже не уменьшается.
Подобная проблема также часто возникает при многократном копировании фрагментов из других файлов в вашу рабочую книгу (например при сборке листов макросом или вручную). Если не используется специальная вставка только значений, то в книгу вставляются и форматы копируемых диапазонов, что очень быстро приводит к превышению лимита.
Как с этим бороться
Направлений тут несколько:
- Если у вас файл старого формата (xls), то пересохраните его в новом (xlsx или xlsm). Это сразу поднимет планку с 4000 до 64000 различных форматов.
- Удалите избыточное форматирование ячеек и лишние "красивости" с помощью команды Главная - Очистить - Очистить форматы (Home - Clear - Clear Formatting). Проверьте, нет ли на листах строк или столбцов отформатированных целиком (т.е. до конца листа). Не забудьте про возможные скрытые строки и столбцы.
- Проверьте книгу на наличие скрытых и суперскрытых листов - иногда на них и кроются "шедевры".
- Удалите ненужное условное форматирование на вкладке Главная - Условное форматирование - Управление правилами - Показать правила форматирования для всего листа (Home - Conditional Formatting - Show rules for this worksheet).
- Проверьте, не накопилось ли у вас избыточное количество ненужных стилей после копирования данных из других книг. Если на вкладке Главная (Home) в списке Стили (Styles) огромное количество "мусора":
...то избавиться от него можно с помощью небольшого макроса. Нажмите Alt+F11 или кнопку Visual Basic на вкладке Разработчик (Developer), вставьте новый модуль через меню Insert - Module и скопируйте туда код макроса:
Sub Reset_Styles() 'удаляем все лишние стили For Each objStyle In ActiveWorkbook.Styles On Error Resume Next If Not objStyle.BuiltIn Then objStyle.Delete On Error GoTo 0 Next objStyle 'копируем стандартный набор стилей из новой книги Set wbMy = ActiveWorkbook Set wbNew = Workbooks.Add wbMy.Styles.Merge wbNew wbNew.Close savechanges:=False End Sub
Запустить его можно с помощью сочетания клавиш Alt+F8 или кнопкой Макросы (Macros) на вкладке Разработчик (Developer). Макрос удалит все неиспользуемые стили, оставив только стандартный набор:
Ссылки по теме
- Как автоматически подсвечивать ячейки с помощью условного форматирования в Excel
- Что такое макросы, куда и как копировать код макроса на Visual Basic, как их запускать
- Книга Excel стала очень тяжелой и медленной - как исправить?
У меня на компьютере OptionExplicit включен,но я определил переменные, так что перестал сбоить. Но почему-то Excel запрашивает разрешение, когда стили из новой книги импортирует - не знаете, почему так?
Но самое интересное не в этом - хотел поделиться - встречаются такие коварные стили, которые не убиваются вашим кодом, да и вообще никаким VBA кодом из мною найденных в интернете не убиваются (могу пример прислать, если надо). Помог AddIn - XLStylesTool (Excel File Clenaup Tool) c сайта sergeig888.wordpress.com - он бесплатный. Насколько я понимаю, эта программа редактирует код файла, что руками достаточно сложно сделать (надо переименовывать расширение, лезть в исходный код и не всегда результат гарантирован); и сносит сбитые и скрытые стили. Пользуюсь постоянно, может чуть более, чем вашим сайтом. Буду рад если кому пригодится.
Спасибо за дополнение про
Этот код делает нужное, без лишних телодвижений, потом только не забыть сохранить книгу. И с новым ее открытием будет стандартный набор.
Подскажите, почему не работает ни 1-й ни 2-й код по удалению стилей?
Excel просто виснет при запуске макроса. (Excel 2010).
Заранее благодарю.
А ещё, мне приходилось даже на ночь макрос запускать)) часов 6 чистил))
может быть есть способ удалить абсолютно все пользовательские стили, но с сохранением форматов ячеек?
Подскажите пожалуйста.
Для себя проблему решил переносом значений, формул и форматов в новую книгу. Стили не перенеслись и были беспощадно удалены со старой книгой)