Здравствуйте. Помогите с макросом поиска определенного слова в тексте и смене его регистра (в нижний регистр)
Ну например: "ОСНОВНОЙ ТЕКСТ" НУЖНЫЙ, а затем, или как-то сразу, поменять порядок: нужный "ОСНОВНОЙ ТЕКСТ". Документ предварительно отредактирован на все прописные. "НУЖНЫЙ" текст всегда одинаков, а "ОСНОВНОЙ ТЕКСТ" меняется.
[вложение удалено администратором]
Макрос находит слово "НУЖНЫЙ". Дальше как макросу узнать, сколько слов слева от слова "НУЖНЫЙ"? Через сколько слов слева нужно вставить слово "нужный"? Какая закономерность?
А если добавить еще условие что до "ОСНОВНОЙ ТЕКСТ" НУЖНЫЙ есть цифра, то есть такой вариант:
1000 "ОСНОВНОЙ ТЕКСТ" НУЖНЫЙ. Цифра тоже есть всегда.
[вложение удалено администратором]
Через подстановочные знаки формулу перестановки подобрал:(<[0-9]{1;}>)(^32)(^34*^34)(^32)(<[а-яё]@['а-яё]@>) со строчными, \1\2\5\4\3, осталось заменить весь "НУЖНЫЙ" на строчные буквы.
Покажите, лучше, реальную структура файла. Может быть понадобится другой способ поиска. Чтобы не делать ненужные действия.
Мне нужно редактировать тв программы. Я сейчас столкнулся с проблемой, что не знаю, как переставлять слова "сериал" из конца строки в положение между временем и названием:
21-50 "Водить по-русски" сериал
21-50 сериал "Водить по-русски"
[вложение удалено администратором]
Пункт 1. Изменение регистра
В ворде можно двумя способами сделать верхний регистр:
1) вкладка "Главная" - Шрифт - Регистр
2) вкладка "Главная" - Шрифт - справа маленькая стрелка - галочка "все прописные"
Если у вас в файле используется первый способ, то с помощью "Найти и заменить" нельзя изменить регистр. Если второй - то можно.
Если в файле используется первый способ, то макрос сначала будет находить слово "сериал", затем будет изменять его регистр. Если в файле используется второй способ. То сначала с помощью "Найти и заменить" можно изменить регистр, а затем переставить.
Пункт 2. Перестановка
Переставить слово "сериал" можно так.
1) Поставьте галочку "подстановочные символы".
2) Поле "Найти:": ([0-9]{2}-[0-9]{2})([!^0013]@)( сериал)(^0013)
3) Поле "Заменить": \1\3\2\4
Примечание
1) Слово "сериал" в тексте должно быть маленькими буквами, т.к. при галочке "подст. символы" учитывается регистр.
2) Расшифровка выражения: [!^0013]@
Один или более любых символов, кроме знака абзаца. Это нужно, чтобы поиск был внутри абзаца.
3) Круглые скобки нужны, чтобы можно было переставить. Каждой круглой скобке присваивается порядковый номер и затем эти порядковые номера указываются в поле "Заменить" в нужном порядке.
Спасибо, выручили.
А регистр вы как будете менять? Я же не написал решение по регистру.
Менять буду следующей командой:
ActiveDocument.Range.Case = wdUpperCase ' заменить на все прописные
а потом поменяю:
.Text = "СЕРИАЛ"
.Replacement.Text = "сериал" 'замена с нужным регистром
.MatchCase = True 'обращает внимание на регистр букв искомого и заменяемого текста
Да, не подумал об этом. Подытожу. Если регистр сделан так: вкладка "Главная" - Шрифт - Регистр, то в "Найти и заменить" нет опции для замены регистра. Но есть обходные варианты.
Вариант 1
Ставьте галочку "Учитывать регистр".
Вариант 2
Ставьте галочку "Подстановочные знаки".
В обоих вариантах в поле "Найти" указывайте слово, у которого надо изменить регистр; нужно указывать в том регистре, в котором слово находится в файле. В поле "Заменить" указывайте то же слово, но уже в нужном регистре.
Только нужно помнить, что слово "сериал" может быть внутри названия телепрограммы. Поэтому я бы так менял:
1) галочка "Подстановочные знаки"
2) Найти: ( СЕРИАЛ)(^0013)
3) Заменить: сериал\2
Учту, подправлю.