Пытаюсь написать макрос, чтобы в тексте документа определенные слова, где бы они не встретились, выделялись ФОНОВЫМ цветом (желтым).
Причем слов много!
Записала примерный макрос - он не работает.
Точнее если просить выделить несколько слов, то они выделяются, а вот так много слов сразу в тексте не ищутся.
Макрос
Sub Макрос1()
Options.DefaultHighlightColorIndex = wdYellow
With ActiveDocument.Range.Find
.Text = "цена"
.Text = "флэт"
.Text = "atr"
.Text = "rsi"
.Text = "AUDUSD"
.Text = "CNH"
.Text = "Heiken Ashi"
.Text = "RUB"
.Text = "вопрос"
.Text = "USDJPY"
.Text = "USDMXN"
.Text = "австралийск"
.Text = "автомат"
.Text = "безубыток"
.Text = "беспроигрыш"
.Text = "бинарны"
.Text = "биткоин"
.Text = "болли"
.Text = "брокер"
.Text = "бэк"
.Text = ""валют
.Text = "ванильн"
.Text = "вебинар"
.Text = "верш"
.Text = "внутрен"
.Text = "внутри"
.Text = "волатильност"
.Text = "вход"
.Text = "вымпел"
.Text = "выход"
.Text = "гармониче"
.Text = "геп"
.Text = "граал"
.Text = "график"
.Text = "графич"
.Text = "гэп"
.Text = "двойн"
.Text = "демо"
.Text = "дивергенци"
.Text = "дно"
.Text = "додж"
.Text = "закрыт"
.Text = "излишн"
.Text = "инвест"
.Text = "индикатор"
.Text = "интуиц"
.Text = "йен"
.Text = "кален"
.Text = "календар"
.Text = "капитал"
.Text = "кластер"
.Text = "книг"
.Text = "коррел"
.Text = "ликвиднос"
.Text = "лини"
.Text = "литератур"
.Text = "локирован"
.Text = "лот"
.Text = "мани менедж"
.Text = "мартинг"
.Text = "мексик"
.Text = "модел"
.Text = "моделирова"
.Text = "мувинг"
.Text = "наход"
.Text = "нахож"
.Text = "начинающ"
.Text = "нович"
.Text = "новост"
.Text = "обучен"
.Text = "объем"
.Text = "определен"
.Text = "оптимизац"
.Text = "опцион"
.Text = "ордер"
.Text = "осциллятор"
.Text = "отложен"
.Text = "песо"
.Text = "пин-бар"
.Text = "план"
.Text = "плечо"
.Text = "поглощен"
.Text = «пин»
.Text = "поддержк"
.Text = "портфел"
.Text = "прайс"
.Text = "предложен"
.Text = "прибыльн"
.Text = "проби"
.Text = "пробо"
.Text = "проскал"
.Text = "против"
.Text = "прямоугол"
.Text = "психолог"
.Text = "пункт"
.Text = "разработ"
.Text = "риск"
.Text = "рубл"
.Text = "ручн"
.Text = "свеч"
.Text = "своп"
.Text = "семинар"
.Text = "сесси"
.Text = "систем"
.Text = "скольз"
.Text = "скользящ"
.Text = "советник"
.Text = "сопротивлен"
.Text = "спред"
.Text = "спрос"
.Text = "спрэд"
.Text = "стоп"
.Text = "стратег"
.Text = "счет"
.Text = "таймфрейм"
.Text = "тест"
.Text = "техническ"
.Text = "точност"
.Text = "трал"
.Text = "трей"
.Text = "трейлинг"
.Text = "тренд"
.Text = "треугол"
.Text = "уровен"
.Text = "уровн"
.Text = "учеб"
.Text = "учит"
.Text = "фибо"
.Text = "флаг"
.Text = "форекс"
.Text = "фрактал"
.Text = "фундам"
.Text = "фундамент"
.Text = "хеджиров"
.Text = "чек лист"
.Text = "черепах"
.Text = "чрезмер"
.Text = "экономич"
.Text = "эксперац"
.Text = "элиот"
.Text = "эмоци"
.Text = "юан"
.Text = "японск"
.Text = "этапы"
.Text = "исторические данные"
.Text = "истори"
.Text = "сделк"
.Text = "проигр"
.Text = "фрактал"
.Text = "ганн"
.Text = "тест"
.Replacement.Highlight = True
.Format = True
.Execute Replace:=wdReplaceAll
End With
End Sub
Я в макросе указал только два слова, вы запишите остальные по аналогии. Для этого:
1) здесь в скобках укажите вместо числа 2 количество искомых слов:
Dim SearchWords(2)
2) в пункт 1 допишите остальные слова по аналогии.
Но столько слов писать в код макроса неудобно. Поэтому слова макрос может брать из ворд-файла, из эксель-файла, из текстового файла. Юзер будет записывать слова в файл, макрос откроет этот файл, извлечёт из него слова, закроет файл и закрасит слова.
Макрос
Sub Макрос()
' Создаём в оперативной памяти компьютера массив с двумя элементами.
Dim SearchWords(2)
Dim i As Long
'1. Записываем в массив 'SearchWords' искомые слова.
SearchWords(1) = "цена"
SearchWords(2) = "флэт"
'2. Поиск и закраска искомых слов.
'1) Настройка цвета.
Options.DefaultHighlightColorIndex = wdYellow
'2) Просматриваем элементы массива 'SearchWords'.
For i = 1 To UBound(SearchWords)
' Поиск и замена.
With ActiveDocument.Range.Find
' В параметр 'Text' подставляем текущий элемент массива.
.Text = SearchWords(i)
.Replacement.Highlight = True
.Execute Replace:=wdReplaceAll
End With
Next i
' Сообщение.
MsgBox "Готово.", vbInformation
End Sub
В самый верх модуля вставьте это, я макрос сделал под эти установки:
Option Explicit
Option Compare Text
Option Base 1