Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

9 Май 2021, 07:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Удалить все неиспользуемые стили из электронной таблицы Calc  (Прочитано 664 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 263



« Стартовое сообщение: 21 Январь 2021, 14:38 »

Есть документ XLSX (он рабочий, выложить не могу) с более чем 1000 стилей, которые явно не используются в документе. Как их поудалять за один раз и быстро? Макрос, который советуют на планетеэксель, очень долго работает в тот самом Эксель:

Код:
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
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 404


WWW
« Ответ #1: 21 Январь 2021, 15:16 »

Добрый день! Можно попробовать выделить все листы (есть в меню по правой кнопке по ярлыку листа) и (в том же меню) скопировать в новую книгу. При этом неиспользуемые стили, как правило, не копируются. Если эта операция производится регулярно и указанный способ помогает, но можно написать макрос для Excel или Calc.
Записан

Владимир.
economist
Форумчанин
***
Offline Offline

Сообщений: 1 451


« Ответ #2: 21 Январь 2021, 15:31 »

Мне попадался от hh тандера файлик с 11 тыс. стилей(!), тупил он безбожно.
Проблемы достигают такого уровня, что вместо чисел выводятся даты итп. Т.е. заболевает стиль ОБЩИЙ. Решение - загрузить чистые стили по умолчанию из другой пустой книги:
Создаем чистую книгу Excel с дефолтными стилями и делаем её ReadOnly. В больном файле запускаем макрос.
Код:
Sub MergeMyStyles()
' импортирует стили ячеек в эту книгу
    ans = MsgBox("Внимание! Если у Вас вместо чисел в ячейках вводятся даты - можно вылечить стиль ОБЩИЙ! Вылечить? ", vbYesNo + vbQuestion)
    If ans = 6 Then
    Dim StylesWb As Workbook
    Set StylesWb = GetObject("M:\BACKUP\!СтилиТолькоЧтение.xlsx")
    Application.DisplayAlerts = False
        ActiveWorkbook.Styles.Merge StylesWb
        StylesWb.Close
    Application.DisplayAlerts = True
    End If
   
    ans = MsgBox("Лечение формата завершено. Новые листы будут здоровыми. В старых листах - проверьте формат - Общий (или Стиль - Обычный)", vbYesNo + vbQuestion)
End Sub
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Wapr Old
Участник
**
Offline Offline

Сообщений: 17


« Ответ #3: 26 Март 2021, 04:04 »

При этом неиспользуемые стили, как правило, не копируются.
А как быть, если есть стили, которыми ни одна ячейка не отформатирована, но при этом они родительские для других, используемых стилей? Если их удалить, рушится ВСЁ!
Записан
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 404


WWW
« Ответ #4: 26 Март 2021, 14:37 »

рушится ВСЁ

Приведите, пожалуйста, пример, когда при копировании листов используемый дочерний стиль копируется, а неиспользуемый родительский - нет.
Во вложении к ячейке A1 применен стиль MyChild, дочерний по отношению к MyParent, который непосредственно не используется. При копировании листа стиль MyParent копируется.

* TestStyles.ods (8.77 Кб - загружено 4 раз.)
Записан

Владимир.
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 545



« Ответ #5: 26 Март 2021, 14:48 »

Создайте новый самостоятельный стиль с нужными установками. Выделите целевые ячейки и щёлкните два раза по имении созданного стиля.
В чём проблема? Сложно выделить диапазоны ячеек? Или много данных, разбросанных беспорядочно там и сям?.. Теперь можно удалить неиспользуемые стили.
« Последнее редактирование: 26 Март 2021, 14:51 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 263



« Ответ #6: 26 Март 2021, 15:18 »

Или много данных, разбросанных беспорядочно там и сям?
Да. Вообще я нашёл выход и в ЛО, можно выбрать неиспользуемые стили через Шифт и все их поудалять. Однако выявилась проблема другого характера, при сохранении этого файла в ЛО и последующем его открытии в МСО - МСО файл не открывает. Это проблема не стилей, однако получается, что на данный момент работать с этим файлом в ЛО нельзя и надо мучать макрос в эксель
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 404


WWW
« Ответ #7: 26 Март 2021, 16:52 »

В Excel можно начать со следующей базовой конструкции (VBA):

Код:
Option Explicit

' Копирует в новую книгу все листы активной книги.
' Если VisibleOnly=True (умолчание), то копируются только видимые листы.
Sub CopySheets(Optional ByVal VisibleOnly As Boolean = True)
  Dim sh As Worksheet, arr(), i As Long
  ReDim arr(Worksheets.Count - 1)
  i = -1
  For Each sh In ActiveWorkbook.Worksheets
    If sh.Visible = xlSheetVisible Or Not VisibleOnly Then
      i = i + 1
      arr(i) = sh.Name
    End If
  Next sh
  If i >= 0 Then
    If i < UBound(arr) Then ReDim Preserve arr(i)
    Worksheets(arr).Copy
  End If
End Sub
Записан

Владимир.
Wapr Old
Участник
**
Offline Offline

Сообщений: 17


« Ответ #8: 26 Март 2021, 18:29 »

Приведите, пожалуйста, пример, когда при копировании листов используемый дочерний стиль копируется, а неиспользуемый родительский - нет.
Я извиняюсь. За полтора года забыл точные условия ошибки.  Грустный
Необходимо применять стили не непосредственно, а через условное форматирование.
LO 7.0.5.2 x64 Win

* Условный стиль 1.ods (9.18 Кб - загружено 1 раз.)

* Ошибка_LO_1.png (33.7 Кб, 465x592 - просмотрено 9 раз.)
« Последнее редактирование: 26 Март 2021, 18:41 от Wapr Old » Записан
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 404


WWW
« Ответ #9: 26 Март 2021, 19:43 »

Да, Вы правы, спасибо за пример. Условному форматированию на багзилле уже посвящено свыше 200 незакрытых сообщений.
Записан

Владимир.
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!