Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: VadimM от 20.11.2009, 09:43

Название: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: VadimM от 20.11.2009, 09:43
Уважаемые знатоки!

Подскажите, как удалить сразу все пользовательские стили ячеек в Excel 2007? Проблема в том, что как только в книгу копируются листы из другой книги, сразу копируются и пользовательские стили (в моем случае это могут быть десятки стилей). Хотелось бы удалить все лишние сразу, а не по одному.

Спасибо!
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: boa от 21.11.2009, 12:47
В меню "Главная" есть "резинка со стрелкой" при раскрытии "стрелки" выберите " "очистить форматы"
выделенные ячейки буду очищены от пользовательского форматирования.

P.S.А еще в темах ранее обсуждалось как очистить вставляемые данные от форматов. Например здесь (https://forum.msexcel.ru/microsoft_excel/zapret_copypaste-t2017.0.html;msg11957#msg11957)
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: VadimM от 22.11.2009, 23:25
Вопрос немного не в этом. Требуется не очистить ячейки от форматов, а удалить из меню форматов все пользовательские форматы, оставив остальные форматы в ячейках как есть. Они не используются, но висят там. У меня большая книга, и там очень много чего наформатировано, не хотелось бы это терять.
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: SergejS от 28.11.2009, 12:45
Может быть решение в том, чтобы вставлять только данные, без форматов?
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: Андрій Гнєвишев от 18.04.2013, 12:17
Может кому пригодится, ответ нашел здесь:
http://www.planetaexcel.ru/?PAGE_NAME=message&FID=8&TID=17396&MID=337014#message337014
"...
Решение:
1. Переименовать расширение xlsx в zip.
2. Открыть архиватором.
3. Удалить из папки xl файл styles.xml
4. Обратно переименовать zip в xlsx.
5. В открывшемся файле не будет никого форматирования стилями ячеек
..."
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: boa от 20.04.2013, 00:44
Цитата: Андрій Гнєвишев от 18.04.2013, 12:17
1. Переименовать расширение xlsx в zip
можно не заморачиваться с переименованием, а просто открыть файл архиватором через меню ПКМ "Открыть с помощью..."
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: Димычч от 20.08.2014, 05:18
Существует аналогичная проблема. Была обнаружена во время поиска причин медленной работы файлов. Но если просто хирургически удалять или заменять styles.xml, то полностью чистятся все форматы книги, и это не вариант. Задача в том, чтобы просто "выделить и удалить" ненужные стили, оставив только стандартные.
Для примера вкладываю 2 файла с одинаковым содержимым. В одном из них - болезнь в виде лишних стилей. Симптомы: увеличенный в 52 раза размер относительно второго файла и увеличенное в несколько раз время открытия файла.
Задача: удалить эту кучу стилей, сохранив форматирование таблички.

Рекомендую всем, у кого медленно открываются и сохраняются файлы, проверить на лишние стили (Главная-Стили-Стили ячеек).

Файл со стилями более 150Кб, поэтому выложил его на яндекс диск: https://yadi.sk/d/zppp6c-Oa4GNs
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: Димычч от 20.08.2014, 11:55
Есть макрос, по замыслу, как раз удаляющий пользовательские форматы и сохраняющий стандартные. Но, почему-то он удаляет не все...
Sub Del_Styles()
Dim stl As Style
On Error Resume Next
For Each stl In ActiveWorkbook.Styles
If Not stl.BuiltIn Then stl.Delete
Next
End Sub

Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: Димычч от 23.09.2014, 06:12
Заметил особенность: те стили, которые не удаляет макрос, нельзя удалить и вручную и приментить к ячейкам. То есть явные "пустышки". Откуда у них такая мощная защита? Как их убить то раз и навсегда?
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: Димычч от 26.11.2014, 07:21
Прошу прощения, что продолжаю долбить в одну и ту же лунку :)

Вопрос не по теме. Удален [МОДЕРАТОР]
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: vikttur от 26.11.2014, 22:14
Тема об удалении. Давайте-ка в новую тему. Эту уже задолбали :)
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: Димычч от 27.11.2014, 08:17
Судя по количеству просмотров данной темы, она довольно актуальна, а ведь ответ на первый вопрос так и не найден. Отвечающие упорно путают понятия "формат" и "стиль" :). Совет "удалить styles.xml" - не решение, так как он рушит форматы в книге. Макрос удаления стилей и его доработка - логичное продолжение данной темы.
Мне нужно создать новую тему "Макрос для удаления всех пользовательских стилей в документе"?
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: vikttur от 27.11.2014, 11:32
Вопрос был, насколько я помню, не об удалении стилей.
Посетители будут пользоваться поиском, поэтому вопросы не по основной тематике в темах, где спрашивают о разном, не буду найдены
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: Кирилл Бойков от 06.11.2017, 22:38
Нашел решение:
1. Создаем дубликат файла
2. в одном из excel файлов удаляем styles.xml
3. Открываем оба Excel файла
4. В книге с форматами выделяем отформатированные области
5. Вставляем в файл без форматов в соответствующие области как формат
6. Удаляем лишние стили (их будет не много, можно в ручную)
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: Дмитрий Гут от 26.07.2018, 11:31
А тема то по сей день актуальная. Вот и я столкнулся с медленным открытием файлов из за раздувшегося списка стилей в файле. Вставлял страницы наших 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>
из первой половины файла стилей.
Странно, что записи этого вида дублируются в огромном количестве друг за другом практически без изменений. Подозреваю, что они также как-то связаны с удаленными стилями, но их вырезать побоялся :)
Название: Re: Как сразу удалить все пользовательские стили ячеек в Excel 2007?
Отправлено: smith45 от 11.09.2018, 10:13
Цитата: Дмитрий Гут от 26.07.2018, 11:31
А тема то по сей день актуальная. Вот и я столкнулся с медленным открытием файлов из за раздувшегося списка стилей в файле. ...
Мне помог метод 2:
https://support.microsoft.com/ru-ru/help/3070372/how-to-clean-up-an-excel-workbook-so-that-it-uses-less-memory