Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2020, 13:20   #1
leo-udav
Новичок
Джуниор
 
Регистрация: 26.03.2020
Сообщений: 3
По умолчанию Поменять в документе Word все вхождения одного стиля на другой

Есть некоторый список "легальных стилей". Задача - во всём документе оставить легальные как есть, а нелегальные поменять на "ОСНОВНОЙ ТЕКСТ". Макрос не работает, меняет что не надо и не меняет что надо. Что я не так делаю? Может я вообще не то меняю?

Private Sub replaceStyles()
' создаю массив допустимых стилей
Dim validStyles() As String
Dim strValidStyles As String
strValidStyles = "_АННОТАЦИЯ_,_ЗАГОЛОВОК ЛИТЕРАТУРА_,_КЛЮЧЕВЫЕ СЛОВА_,_НАЗВАНИЕ СТАТЬИ_,_ОСНОВНОЙ ТЕКСТ_,_ПОДРАЗДЕЛ_,_РАЗДЕЛ_,_РИСУНО К И ТАБЛИЦА_,_СНОСКА_,_СПИСОК АВТОРОВ_"
validStyles() = Split(strValidStyles, ",")

Dim i As Integer
Dim v As Integer
Dim valid As Boolean

' по всем стилям в документе
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).NameLocal
.Replacement.Style = "_ОСНОВНОЙ ТЕКСТ_"
.Execute Replace:=wdReplaceAll
End With
End If
End If
Next i

End Sub
leo-udav вне форума Ответить с цитированием
Старый 26.03.2020, 19:56   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от leo-udav Посмотреть сообщение
.ClearFormatting
По моему это тут лишнее.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать процедуру удаления из из ТИПИЗИРОВАННОГО файла повторные вхождения одного и того же числа(паскаль) Космодемьян Паскаль, Turbo Pascal, PascalABC.NET 8 17.02.2019 17:10
Нужна программка, которая связывает два документа (например, Word). Если в документе № 1 я поменяю текст, то он и в документе № 2 автоматически изменится Эльф085 Общие вопросы по программированию, компьютерный форум 21 06.07.2017 21:22
проблема при копировании одного столбца из одного файла в другой файл tanunya Помощь студентам 0 24.02.2012 21:30
VBA Word Перенос текста из ячеек таблицы одного файла в другой bietins Microsoft Office Word 2 13.09.2011 16:04
Переход между закладками в тексте одного стиля Окоча Юра Microsoft Office Word 3 01.02.2011 00:55