Поменять все вхождения стиля на другой
Есть список "легальных" стилей в документе. Надо все вхождения "нелегальных" стилей поменять на некоторый. Вроде бы простой код, но не работает. В чём ошибка?
Private Sub replaceStyles() ' создаю массив допустимых стилей Dim validStyles() As String Dim strValidStyles As String strValidStyles = "АННОТАЦИЯ,ЗАГОЛОВОК ЛИТЕРАТУРА,КЛЮЧЕВЫЕ СЛОВА,НАЗВАНИЕ СТАТЬИ,ОСНОВНОЙ ТЕКСТ,ПОДРАЗДЕЛ,РАЗДЕЛ,РИСУНОК И ТАБЛИЦА,СНОСКА,СПИСОК АВТОРОВ" validStyles() = Split(strValidStyles, ",")
Dim i As Integer
Dim v As Integer
' по всем стилям в документе
For i = 1 To ActiveDocument.Styles.count
' если они используются
If ActiveDocument.Styles(i).InUse Then
valid = False
' соответствуют ли они легальным стилям
For v = LBound(validStyles) To UBound(validStyles)
If ActiveDocument.Styles(i).NameLocal = validStyles(v) Then
valid = True
Exit For
End If
Next v
' если нет - меняем на "_ОСНОВНОЙ ТЕКСТ_" везде, где встретятся
If valid = False Then
With ActiveDocument.Range.Find
.ClearFormatting
.Text = ""
.Style = ActiveDocument.Styles(i)
.Replacement.Style = "_ОСНОВНОЙ ТЕКСТ_"
.Execute Replace:=wdReplaceAll
End With
End If
End If
Next i
End Sub