Форум по VBA, Excel и Word

Word => Макросы в Word => Тема начата: Посетитель от 11 июня 2017, 16:31

Название: Word Макрос. Как удалить лишние стили?
Отправлено: Посетитель от 11 июня 2017, 16:31
Интересует, как можно удалить все стили, даже свои, созданные пользователем, кроме стандартных (которые присутствуют в документе по умолчанию при создании нового документа Word).
Название: Re: Word Макрос: Как удалить лишние стили?
Отправлено: Администратор от 11 июня 2017, 21:52
Макрос
Sub Макрос()
   
    Dim style As style
    Dim i As Long
   
   
    ' Цикл по всем стиялм в активном файле от последнего к первому.
    For i = ActiveDocument.Styles.Count To 1 Step -1
        ' Присваиваем стилю имя "style" (чтобы удобнее писать код).
        Set style = ActiveDocument.Styles(i)
        ' Если стиль не встроенный, то удаляем.
        If style.BuiltIn = False Then
            style.Delete
        End If
    Next i
   
    ' Сообщение, чтобы было понятно, что макрос закончил работу.
    MsgBox "Готово.", vbInformation
   
End Sub
[свернуть]
Название: Re: Word Макрос. Как удалить лишние стили?
Отправлено: Посетитель от 12 июня 2017, 11:19
Спасибо!
Вот только результат немного не тот, который я ожидал.
У текста, если удалить стиль вручную, структура не сбрасывается. А тут получается, что макрос везде заменяет все пользовательские стили на обычный.
Это поправимо или только так?
Название: Re: Word Макрос: Как удалить лишние стили?
Отправлено: Администратор от 12 июня 2017, 11:27
Напишите, куда вы щёлкаете, чтобы удалить стиль вручную.
Название: Re: Word Макрос. Как удалить лишние стили?
Отправлено: Посетитель от 12 июня 2017, 11:39
Подвожу указатель мыши к панели стилей, навожу на стиль, нажимаю правую кн. мыши, в выпадающем меню выбираю пункт  Удалить из коллекции экспресс-стилей.
Название: Re: Word Макрос: Как удалить лишние стили?
Отправлено: Администратор от 12 июня 2017, 12:07
В этом случае стиль не удаляется, а только удаляется стиль из коллекции стилей.
Вы хотите удалить стиль совсем или из коллекции стилей? Коллекция стилей - это то, что вы показали на скриншоте в другой теме.
Название: Re: Word Макрос: Как удалить лишние стили?
Отправлено: Администратор от 12 июня 2017, 12:11
Макрос удаляет из коллекции стилей пользовательские стили:
Макрос
Sub Макрос()
   
    Dim style As style, i As Long
   
   
    ' Цикл по всем стиялм в активном файле от последнего к первому.
    For i = ActiveDocument.Styles.Count To 1 Step -1
        ' Присваиваем стилю имя "style" (чтобы удобнее писать код).
        Set style = ActiveDocument.Styles(i)
        ' Если стиль есть в коллекции стилей (или если это спецстиль, которого может быть
            ' не видно в коллекции, но он там есть).
        If style.QuickStyle = True Then
            ' Если стиль невстроенный, то удаляем.
            If style.BuiltIn = False Then
                style.QuickStyle = False
            End If
        End If
    Next i
   
    ' Сообщение, чтобы было понятно, что макрос закончил работу.
    MsgBox "Готово.", vbInformation
   
End Sub
[свернуть]
Название: Re: Word Макрос. Как удалить лишние стили?
Отправлено: Посетитель от 12 июня 2017, 12:32
Спасибо за вариант! Оба мне пригодятся!

Хотя появилась мысль, а можно ли отвязать текст от стиля, например, сначала назначить тексту стиль заголовок, а потом сделать так, что оформление текста осталось, а стиль у него стал обычный (причем чтобы сохранился цвет, размер, шрифт, отступы и т.п. параметры шрифта и абзаца).