1

Тема: Как сохранить абзацы определенного стиля?

Есть макрос, меняющий все стили в документе на "Обычный", но сохраняющий полужирный и курсив. Что бы в него добавить, чтобы он не трогал абзацы определенного стиля? Конкретно заголовки wdStyleHeading1 - wdStyleHeading9 и списки wdStyleList, wdStyleListBullet и wdStyleListNumber.

Sub ВсеСделатьОбычнымССохранениемФорматирования()
With ActiveDocument.Styles(-1)
.Font.Name = "Times New Roman"
.Font.Size = 12
.ParagraphFormat.LineSpacingRule = wdLineSpace1pt5
.ParagraphFormat.Alignment = wdAlignParagraphLeft
End With
ActiveDocument.Styles(-1).NoProofing = False
Dim i, b As Boolean
Dim a As String
For Each p In ActiveDocument.Paragraphs
    a = p.Alignment
    b = p.Range.Bold
    i = p.Range.Italic
    p.style = ActiveDocument.Styles(-1)
    p.Alignment = a
    p.Range.Bold = b
    p.Range.Italic = i
Next p
End Sub

2

Re: Как сохранить абзацы определенного стиля?

Клавицепс пурпуреа пишет:

. . .
Что бы в него добавить, чтобы он не трогал абзацы определенного стиля? Конкретно заголовки wdStyleHeading1 - wdStyleHeading9 и списки wdStyleList, wdStyleListBullet и wdStyleListNumber.
. . .

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

Sub SkipStyles()
Dim i, b As Boolean
Dim a As String
Dim sn As String
Dim vs As String

vs = "\"
On Error Resume Next
vs = vs & ActiveDocument.Styles(wdStyleHeading1).NameLocal & "\"
vs = vs & ActiveDocument.Styles(wdStyleHeading2).NameLocal & "\"
'. . . add here all styles to be skipped
On Error GoTo 0

For Each p In ActiveDocument.Paragraphs
    sn = p.Style.NameLocal
    If InStr(vs, "\" & sn & "\") = 0 Then 'this style is not in the 'vs' list
        a = p.Alignment
        b = p.Range.Bold
        i = p.Range.Italic
        p.Style = ActiveDocument.Styles(-1)
        p.Alignment = a
        p.Range.Bold = b
        p.Range.Italic = i
    End If
Next p
End Sub

3

Re: Как сохранить абзацы определенного стиля?

Проверил: работает!!! big_smile