Как повторно применить / обновить стиль / шрифт для всех абзацев, кроме некоторых? - PullRequest
0 голосов
/ 08 декабря 2011

У меня очень длинный документ Word, и шрифты отдельных абзацев довольно разнообразны и многочисленны (текст без засечек, субтитры и заголовки с засечками).Единственный стиль, который применяется последовательно и правильно, это заголовки и заголовки от 1 до 4.

Есть ли способ применить общий шрифт ко ВСЕМ абзацам, НО заголовки и заголовки без потери форматирования жирным шрифтом и курсивом этих абзацев?Я попытался повторно применить стили, как описано здесь http://www.elharo.com/blog/word/2005/12/28/word-tip-1-reapplying-styles/, но это будет работать только для абзацев, которые не имеют курсивного или полужирного форматирования (или ссылок http)

Способ, которым я вижу это в настоящее времяединственный способ получить согласованные шрифты и стили для обычных абзацев - это а) удалить все форматирование, применяя стиль к каждому абзацу отдельно, а затем пройти каждый абзац и вручную повторно применить форматирование жирным шрифтом / курсивом / http к тем частям, которые имеютсейчас был перезаписан.

Есть ли альтернативный способ сделать это?Должно быть, верно?VBA?что-то еще?

РЕДАКТИРОВАТЬ:

Возможно ли что-то вроде следующего (псевдокод):

for i in all_paragraphs()
    if i.style not in [header1, header2, header3, caption, ...]
        i.font = my_new_font

таким образом, любая разметка должна быть сохранена.

1 Ответ

2 голосов
/ 10 декабря 2011

Эту задачу можно довольно легко выполнить с помощью VBA, как вы сказали:

    Sub changeStyles()
        Dim p As Paragraph

        For Each p In ActiveDocument.Paragraphs
            If p.Range.Style <> "Caption" _
            And p.Range.Style <> "Heading 1" _
            And p.Range.Style <> "Heading 2" _
            And p.Range.Style <> "Heading 3" _
            And p.Range.Style <> "Heading 4" _
            Then
                p.Range.Font.Name = "Arial"
            End If
        Next
    End Sub

Этот код будет применять любые стили, которые вы хотите, к каждому объекту Paragraph в документе, который не имеетстили, которые вы упомянули.В p.Range.Font есть много членов, которые могут оказаться полезными, например, Bold и Italic, если у вас есть необходимость изменить эти свойства.

...