При работе с книгами Excel, особенно при копировании листов из одной книги в другую, можно столкнуться с ситуацией, когда в файле появляется множество лишнего «хлама», в том числе дополнительных стилей оформления ячеек, которые вам не нужны и которые следует удалить, так как они увеличивают размер файла. Рассмотрим два способа, как можно удалить стили в Excel.
Способ 1. Удаление лишних стилей в Excel при помощи макроса
Для примера я создал три пользовательских стиля, которые не использую в книге (в реальной жизни их может быть тысячи), которые необходимо удалить.
Воспользуемся макросом Excel, который автоматически удалит все такие стили. Для того, чтобы создать макрос, во-первых, необходимо открыть сам редактор макросов Visual Basic. Для этого нажмите комбинацию клавиш Alt+F11, либо зайдите в меню «Разработчик» и нажмите кнопку Visual Basic.
В случае, если у вас в ленте нет меню «Разработчик», то вам нужно его добавить. Для этого нажмите на ленту правой кнопкой и выберите пункт «Настройка ленты…»
В открывшемся окне ставим галочку напротив пункта «Разработчик» и необходимое нам меню появляется на ленте.
Итак, открыли Visual Basic. Выбираем меню «Insert» и в нем команду «Module».
В открывшемся окне вставляем следующий макрос:
Sub StyleKiller()
Dim N As Long, i As Long
With ActiveWorkbook
N = .Styles.Count
For i = N To 1 Step -1
If Not .Styles(i).BuiltIn Then .Styles(i).Delete
Next i
End With
MsgBox («Лишние стили удалены»)
End Sub
Запускаем макрос, нажав на кнопку Run
После того, как макрос отработает (это может занять длительное время в случае, если пользовательских стилей очень много), вам будет выведено сообщение, что лишние стили удалены.
Закрываем Visual Basic, возвращаемся в Excel. Теперь в стилях остались только те, которые были в Excel по умолчанию.
Способ 2. Удаление стилей в Excel вручную
В случае, если стилей немного и нет желания разбираться с макросами, то лишние стили можно удалить вручную. Плюс этого способа в отличии от первого в том, что часть пользовательских стилей можно оставить для работы.
Для того что бы удалить пользовательский стиль откройте окно со стилями и нажмите правой клавишей на тот стиль, который вам не нужен и выберите команду «Удалить».
Стиль удален. Спасибо за прочтение статьи.
Слишком много различных форматов ячеек
Это может случиться и с вами.
Работая с большой книгой в 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 стала очень тяжелой и медленной — как исправить?
А тема то по сей день актуальная. Вот и я столкнулся с медленным открытием файлов из за раздувшегося списка стилей в файле. Вставлял страницы наших Kорейских коллег — вот и довставлялся. 1599 стилей.
Поди-ка вручную поудаляй.
Стилями не пользуюсь, но форматирование страниц специфическое, по этому не хотелось рисковать оформлением удаляя файл «styles.xml»
Вот только я не понял — почему никому не пришло в голову править данный файл?
(Сразу приношу извинения, у меня Excell 2010, но думаю разница с 2007 в данном контексте не особо существенная).
Мое решение:
Открываем файл в текстовом редакторе с возможностью поиска-замены (я пользовался Word-ом, он позволяет искать и вставлять спецсимволы, что удобно).
Файл представляет из себя простыню параметров без переносов строки, что не очень читаемо.
Во второй половине файла видим такие строки примерно:
</cellXfs>
<cellStyles count=»1599″>
а дальше идет указанное число параметров (1599) такого вида:
<cellStyle xfId=»94″ name=»20% — 강조색3 22″/>
<cellStyle xfId=»118″ name=»20% — 강조색3 9″/>
и т.д. (в текстовом редакторе переносов нет, всё в одну строку)
А заканчивается всё это великолепие строкой
</cellStyles>
Ну в моем случае все просто — мне предстояло вырезать те стили, названия которых были на корейском языке.
Чтобы было читабельно сделал автозамену:
«<cellStyle» меняем на «^p<cellStyle»
Эта замена вставляет перед каждым стилем перенос строки.
— Просматриваем , выделяем и удаляем ненужные стили.
— Считаем оставшиеся
— Вносим соответствующее количество в параметр <cellStyles count=» «>
(я оставил один, соответственно поставил единицу).
Сориентироваться на самом деле легко — в интерфейсе Excell во вкладке со стилями показаны имена стилей, можно выписать те, что нужны — их оставить, остальные — удалить.
После этого удаляем спецсимволы (опять же автозаменой «^p» заменить на «»), сохраняем.
Впрочем я спецсимволы не удалял — забыл, и всё равно заработало.
Собственно всё. Лишних стилей больше нет, заработало всё нормально, оформление не слетело.
ЗЫ:
Если есть грамотные специалисты — прошу пояснить назначение параметров вида
<xf numFmtId=»0″ fontId=»111″ fillId=»32″ borderId=»0″ applyNumberFormat=»0″ applyBorder=»0″ applyAlignment=»0″ applyProtection=»0″><alignment vertical=»center»/></xf>
из первой половины файла стилей.
Странно, что записи этого вида дублируются в огромном количестве друг за другом практически без изменений. Подозреваю, что они также как-то связаны с удаленными стилями, но их вырезать побоялся
Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Еще…Меньше
Чтобы применить несколько форматов за один шаг и убедиться в том, что форматирование ячеек согласовано, можно использовать стиль ячейки. Стиль ячейки — это определенный набор характеристик форматирования, таких как шрифты и размеры шрифтов, форматы номеров, границы ячеок и затенение ячеок. Чтобы запретить внесение изменений в определенные ячейки, можно также использовать стиль ячейки, который блокирует ячейки.
Microsoft Office Excel есть несколько встроенных стилей ячеок, которые можно применять и изменять. Вы также можете изменить или продублировать стиль ячейки, чтобы создать собственный пользовательский стиль ячейки.
Важно: Стили ячеок основаны на теме документа, которая применяется во всей книге. При переключении на другую тему документа стили ячеок обновляются в соответствие с новой темой документа.
-
Выделите ячейки, которые нужно отформатировать. Дополнительные сведения см. в статье Выбор ячеек, диапазонов, строк и столбцов на сайте.
-
На вкладке Главная в группе Стили щелкните стрелку «Дополнительные» в коллекции стилей и выберите стиль ячейки, который вы хотите применить.
-
На вкладке Главная в группе Стили щелкните стрелку в группе Дополнительные стили в коллекции стилей и в нижней части коллекции выберите новый стиль ячейки.
-
В поле Имя стиля введите соответствующее имя для нового стиля ячейки.
-
Нажмите кнопку Формат.
-
На различных вкладках в диалоговом окне Формат ячеек выберите нужное форматирование и нажмите кнопку ОК.
-
В диалоговом окне Стиль в области Стили (по примеру)сберите флажки для форматирования, которое не нужно включать в стиль ячейки.
-
Нажмите кнопку ОК.
-
На вкладке Главная в группе Стили щелкните стрелку стрелки «Еще» в коллекции стилей.
-
Выполните одно из указанных ниже действий.
-
Чтобы изменить существующий стиль ячейки, щелкните его правой кнопкой мыши и выберите изменить.
-
Чтобы создать дубликат существующего стиля ячейки, щелкните его правой кнопкой мыши и выберите дублировать.
-
-
В поле Имя стиля введите соответствующее имя для нового стиля ячейки.
Примечание: В список пользовательских стилей ячеев добавляются повторяющиеся стили ячеев и переименованные. Если не переименовать встроенный стиль ячейки, он будет обновляться с внесением изменений.
-
Чтобы изменить стиль ячейки, нажмите кнопку Формат.
-
На различных вкладках в диалоговом окне Формат ячеек выберите нужное форматирование и нажмите кнопку ОК.
-
В диалоговом окне Стиль в области Стили : ,выберите или сберите флажки для форматирования, которые вы или не хотите включать в стиль ячейки.
Стиль ячеек можно удалить из данных в выбранных ячейках, не удаляя стиль ячеек.
-
Вы можете выбрать ячейки, отформатированные с помощью стиля ячейки, который вы хотите удалить. Дополнительные сведения см. в статье Выбор ячеек, диапазонов, строк и столбцов на сайте.
-
На вкладке Главная в группе Стили щелкните стрелку стрелки «Еще» в коллекции стилей.
-
В области Хорошее, Плохое и Нейтральныйвыберите обычный.
Вы можете удалить предопределенный или пользовательский стиль ячеок, чтобы удалить его из списка доступных стилей ячеев. При удалении стиля ячейки он также удаляется из всех ячеек, отформатированные с ним.
-
На вкладке Главная в группе Стили щелкните стрелку стрелки «Еще» в коллекции стилей.
-
Чтобы удалить готовый или пользовательский стиль ячеек и удалить его из всех отформатированной ячейки, щелкните правой кнопкой мыши стиль ячеек и выберите удалить .
Примечание: Удалить стиль ячейки «Обычный» невозможно.
-
Выделите ячейки, которые нужно отформатировать. Дополнительные сведения см. в статье Выбор ячеек, диапазонов, строк и столбцов на сайте.
-
На вкладке Главная в группе Стили нажмите кнопку Стили ячеек.
Совет: Если вы не видите кнопку Стили ячеок, щелкните Стили инажмите кнопку Дополнительные рядом с полем стили ячеок.
-
Выберите стиль ячейки, который вы хотите применить.
-
На вкладке Главная в группе Стили нажмите кнопку Стили ячеек.
Совет: Если вы не видите кнопку Стили ячеок, щелкните Стили инажмите кнопку Дополнительные рядом с полем стили ячеок.
-
Выберите команду Создать стиль ячейки.
-
В поле Имя стиля введите соответствующее имя для нового стиля ячейки.
-
Нажмите кнопку Формат.
-
На различных вкладках в диалоговом окне Формат ячеек выберите нужное форматирование и нажмите кнопку ОК.
-
В диалоговом окне Стиль в области Стили (по примеру)сберите флажки для форматирования, которое не нужно включать в стиль ячейки.
-
На вкладке Главная в группе Стили нажмите кнопку Стили ячеек.
Совет: Если вы не видите кнопку Стили ячеок, щелкните Стили инажмите кнопку Дополнительные рядом с полем стили ячеок.
-
Выполните одно из указанных ниже действий.
-
Чтобы изменить существующий стиль ячейки, щелкните его правой кнопкой мыши и выберите изменить.
-
Чтобы создать дубликат существующего стиля ячейки, щелкните его правой кнопкой мыши и выберите дублировать.
-
-
В поле Имя стиля введите соответствующее имя для нового стиля ячейки.
Примечание: В список пользовательских стилей ячеев добавляются повторяющиеся стили ячеев и переименованные. Если не переименовать встроенный стиль ячейки, он будет обновляться с внесением изменений.
-
Чтобы изменить стиль ячейки, нажмите кнопку Формат.
-
На различных вкладках в диалоговом окне Формат ячеек выберите нужное форматирование и нажмите кнопку ОК.
-
В диалоговом окне Стиль в области Стили : ,выберите или сберите флажки для форматирования, которые вы или не хотите включать в стиль ячейки.
Стиль ячеек можно удалить из данных в выбранных ячейках, не удаляя стиль ячеек.
-
Вы можете выбрать ячейки, отформатированные с помощью стиля ячейки, который вы хотите удалить. Дополнительные сведения см. в статье Выбор ячеек, диапазонов, строк и столбцов на сайте.
-
На вкладке Главная в группе Стили нажмите кнопку Стили ячеек.
Совет: Если вы не видите кнопку Стили ячеок, щелкните Стили инажмите кнопку Дополнительные рядом с полем стили ячеок.
-
В области Хорошее, Плохое и Нейтральныйвыберите обычный.
Вы можете удалить предопределенный или пользовательский стиль ячеок, чтобы удалить его из списка доступных стилей ячеев. При удалении стиля ячейки он также удаляется из всех ячеек, отформатированные с ним.
-
На вкладке Главная в группе Стили нажмите кнопку Стили ячеек.
Совет: Если вы не видите кнопку Стили ячеок, щелкните Стили инажмите кнопку Дополнительные рядом с полем стили ячеок.
-
Чтобы удалить готовый или пользовательский стиль ячеек и удалить его из всех отформатированной ячейки, щелкните правой кнопкой мыши стиль ячеек и выберите удалить .
Примечание: Удалить стиль ячейки «Обычный» невозможно.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Нужна дополнительная помощь?
Переполнение коллекции стилей ячеек
Excel файл может содержать не более 65535 стилей ячеек (доступны через меню ГЛАВНАЯ — Стили ячеек). Не совсем понятно как это достигается на практике (создание стиля довольно трудоемкая операция, если только генерировать их программно), но периодически приходится сталкиваться с файлами, которые вплотную подошли к данному пределу и при попытке отформатировать любую ячейку вы получаете следующую ошибку:
Более того, коль скоро у вас завелись такие файлы, то приходилось видеть, что при копировании какого-либо листа (или даже диапазона ячеек) из переполненного файла в новую книгу в неё перебиралась и эта огромная таблица стилей. Это даже отчасти напоминает вирусное заражение, хотя, конечно, им не является.
Данная проблема не решается через пользовательский интерфейс Excel — необходима специальная программа, которая очистит таблицу стилей принудительно.
Большое количество именованных диапазонов
Второй возможный недуг, с которым борется моя утилита, состоит в том, что книга Excel может содержать огромное количество именованных диапазонов. При этом, иногда, их даже невозможно удалить через Диспетчер имён (Ctrl+F3), так как они могут быть повреждены. Признаком наличия в файле большого количества именованных диапазонов является огромное количество вопросов, которые задаёт вам Excel при попытке скопировать лист книги в саму себя. Данная проблема также имеет свойство «заражать» файлы и сохраняться длительное время.
Утилита CureExcel
Алгоритм ваших действий:
-
Открыть файл CureExcel.xlsb
-
Открыть в Excel предположительно «больной» файл
-
В CureExcel нажать кнопку «Cure Excel» — откроется следующая форма
-
В выпадающем списке выбрать ваш ранее открытый файл
-
Нажать кнопку «Диагностика»
-
Ознакомиться с выводом программы и её рекомендацией
-
В случае наличия рекомендации по лечению, нажать кнопку «Лечить», подтвердить запуск операций
-
Дождаться окончания процедуры. Стили удаляются довольно долго (65 000 стилей удаляются примерно 5-7 минут). Прогресс
виден по статусной строке Excel. По окончании процедуры выводится статистика проделанных операций и достигнутого
результата. -
Оригинальный файл остаётся неизменным, а исправленный файл с суффиксом «_CURE» сохраняется в той же
папке, то есть операции совершенно безопасны.