Найти слово Vba и выделить текст

Обновлено: 20.11.2024

Время от времени мы выделяем текст цветом при навигации по документу. Все эти куски текста могут разбросаны по всей статье, но они определенно заслуживают нашего внимания. Поэтому мы можем просто экспортировать и упорядочить их в другом документе для быстрого просмотра в следующий раз, что избавит нас от прокрутки колесика мыши снова и снова.

Способ 1. Используйте функцию «Расширенный поиск»

  1. Сначала перейдите на вкладку "Главная", а затем нажмите перевернутую кнопку рядом с надписью "Найти".
  2. Затем выберите «Расширенный поиск», чтобы открыть диалоговое окно «Найти и заменить». /2000/svg'%20viewBox='0%200%20980%20152'%3E%3C/svg%3E" alt="Нажмите "Домой"->Нажмите кнопку->Нажмите "Расширенный поиск"" width="980 " height="152" data-lazy-srcset="https://www.datanumen.com/blogs/wp-content/uploads/2017/03/Click-Home-then-Click-the-Button-then-Click -Advanced-Find.jpg 980w, https://www.datanumen.com/blogs/wp-content/uploads/2017/03/Click-Home-then-Click-the-Button-then-Click-Advanced-Find- 300x47.jpg 300 Вт, https://www.datanumen.com/blogs/wp-content/uploads/2017/03/Click-Home-then-Click-the-Button-then-Click-Advanced-Find-768x119.jpg 768w, https://www.datanumen.com/blogs/wp-content/uploads/2017/03/Click-Home-then-Click-the-Button-then-Click-Advanced-Find-500x78.jpg 500w" данные -lazy-sizes="(max-width: 980px) 100vw, 980px" data-lazy-src="https://www.datanumen.com/blogs/wp-content/uploads/2017/03/Click-Home- затем нажмите кнопку -затем-Нажмите-Дополнительно-Найти.jpg" />
  3. В поле поместите курсор в текстовое поле «Найти», а затем нажмите «Еще».
  4. Затем нажмите кнопку «Формат» и выберите «Выделить». Выберите «Выделить». 200%20265%20469'%3E%3C/svg%3E" alt="Нажмите "Формат"->Выберите "Выделить"" width="265" height="469" data-lazy-srcset="https:// www.datanumen.com/blogs/wp-content/uploads/2017/03/Clikc-Format-then-Choose-Highlight.jpg 265w, https://www.datanumen.com/blogs/wp-content/uploads/2017 /03/Clikc-Format-then-Choose-Highlight-170x300.jpg 170w" data-lazy-sizes="(max-width: 265px) 100vw, 265px" data-lazy-src="https://www.datanumen .com/blogs/wp-content/uploads/2017/03/Clikc-Format-then-Choose-Highlight.jpg" />
  5. Затем нажмите вкладку «Найти в» и выберите «Основной документ». Выберите «Основной документ» svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox= '0%200%20568%20272'%3E%3C/svg%3E" alt="Нажмите "Найти в"->Выберите "Основной документ"" width="568" height="272" data-lazy-srcset= "https://www.datanumen.com/blogs/wp-content/uploads/2017/03/Clcik-Find-In-then-Choose-Main-Document.jpg 568w, https://www.datanumen.com/ blogs/wp-content/uploads/2017/03/Clcik-Find-In-then-Choose-Main-Document-300x144.jpg 300w, https://www.datanumen.com/blogs/wp-content/uploads/2017 /03/Clcik-Find-In-then-Choose-Main-Document-500x239.jpg 500w" data-lazy-sizes="(max-width: 568px) 100vw, 568px" data-lazy-src="https:/ /www.datanumen.com/blogs/wp-content/uploads/2017/03/Clcik-Find-In-then-Choose-Main-Document.jpg" />

Теперь вы увидите, что все выделенные тексты выделены, как показано ниже:

Затем их можно скопировать и вставить в новый документ.

Способ 2. Использование Word VBA

Как показано в нашем примере, нет ничего необычного в том, что несколько текстов выделяются разными цветами. Теперь давайте сначала поговорим о том, как сделать так, чтобы все содержимое выделялось одним цветом.

У вас будет новый документ со всеми выделенными в нем текстами.

Затем есть еще один макрос, который позволит вам собрать все выделенные тексты одного цвета из нескольких документов. Что вам нужно сделать, так это организовать их все в одну папку и выполнить описанные выше шаги, но заменить макрос на этот:

Примечания:

Резервное копирование никогда не поздно

Короче говоря, мы уделяем столько внимания резервному копированию, что большинство из вас должны знать, насколько это важно сейчас. Таким образом, мы все еще можем не выполнять резервное копирование на регулярной основе. И правда в том, что без резервного копирования остается единственный вариант, когда происходит повреждение документа, — это получить инструмент для извлечения данных.

Функция Word «Найти и заменить» удобна, но имеет определенные ограничения. Вот макрос, который позволит выделить несколько строк поиска.

Функция Word «Найти и заменить» является гибкой, но может стать утомительной, если вы постоянно ищете одни и те же строки. Например, предположим, что вы редактор, и у вашего издателя есть список чрезмерно используемых слов, которые вы удаляете из всех рукописей.Вы можете сделать это трудным путем, находя каждое слово одно за другим, просматривая контекст, а затем удаляя (или нет). Или вы можете использовать макрос, чтобы выделить все экземпляры всех этих слов и фраз одновременно. Объединение всех условий поиска в одну задачу поиска является эффективным. Выделение каждого экземпляра позволяет вам просматривать каждый в контексте.

В этой статье вы узнаете, как использовать функцию "Найти и заменить", чтобы выделить все экземпляры одного поискового запроса. Далее вы рассмотрите макрос, который одновременно выделяет все экземпляры нескольких условий поиска.

Я буду использовать Word 2016 в 64-разрядной системе Windows 10. Отличия в версии Ribbon незначительны. Там, где это заметно отличается, я включил несколько инструкций для Word 2003. Вы можете использовать свой собственный документ или скачать пример .docm, .doc и. bas-файлы.

Подробнее о программном обеспечении

Выделение строки поиска вручную

Когда вы нажимаете кнопку "Найти", чтобы открыть панель навигации, эта функция выделяет все экземпляры строки поиска. Word удалит выделение, когда вы закроете панель навигации. Это может быть именно то, что вам нужно. Если вы хотите сохранить основные моменты, используйте вместо этого параметр «Расширенный поиск». Чтобы продемонстрировать эту технику, давайте выделим все экземпляры слова very в примере документа следующим образом:

  1. На вкладке "Главная" выберите выделение в параметре "Цвет выделения текста", если вы хотите указать выделение или если этот параметр был снят. Эта функция зависит от выбранного в данный момент выделения.
  2. Выберите «Расширенный поиск» в раскрывающемся списке «Найти» в группе «Редактирование» на вкладке «Главная» (рис. A). Не используйте функцию «Найти» или «Заменить», чтобы открыть панель навигации. В Word 2003 выберите "Найти" в меню "Правка".
  3. Введите строку поиска в поле поиска. Я ввел очень (рис. Б).
  4. Нажмите «Выделить чтение» и выберите «Выделить все», и Word выделит все экземпляры очень. В Word 2003 установите флажок «Выделить все найденные элементы» и нажмите «Найти все». Используя параметры «Найти в», вы можете отточить поиск по определенным разделам, но «Основной документ» — единственный выбор в этом примере.
  5. Закройте диалоговое окно, и вы увидите, что выделение не изменилось (рис. C).

Рисунок А

Выберите «Расширенный поиск».

Рисунок Б

Введите строку поиска.

Рисунок C

Выделения остаются после закрытия диалогового окна, но они временны.

Чтобы очистить выделение, воспользуйтесь расширенным поиском и выберите «Очистить выделение» в раскрывающемся списке «Выделение чтения». Если вы удалите любой экземпляр выделенной строки поиска, Word удалит все оставшиеся выделения. Нажатие [Ctrl]+Z восстановит удаленную строку, но не выделение. Word не сохраняет основные моменты; как только вы закроете документ, выделение исчезнет.

Этот трюк может пригодиться во время встречи или презентации, когда кто-то спрашивает подробности, планы на будущее и т. д. Просто выделите определенное слово или фразу, чтобы быстро найти ключевые моменты, которые можно пояснить, используя окружающий контент.

Макрос выделяет несколько строк поиска

Возможно, вам подойдет и ручной способ. Однако это ограничено: вы можете искать только одну строку, а выделение является временным. Если вы постоянно ищете один и тот же список слов и фраз и хотите, чтобы выделение было более постоянным, вы можете использовать макрос из листинга А.

Список А

Затемнить слово как диапазон

Затемнить WordCollection(2) как строку

Тусклые слова как вариант

'Если вы добавляете или удаляете, измените значение выше в операторе Dim.

WordCollection(2) = "конечно"

'Установить цвет выделения.

'Удалить существующее форматирование и настройки в функции поиска.

'Установить выделение вместо настройки.

'Пролистайте документ и найдите слова в коллекции.

'Выделять слова, если они найдены.

Для каждого слова в ActiveDocument.Words

Для каждого слова в WordCollection

Примечание. Не копируйте и не вставляйте код с этой веб-страницы, поскольку редактор Visual Basic (VBE) отклоняет некоторые веб-символы. Вы можете найти макрос в загружаемом файле примера или импортировать файл модуля (также в загружаемом файле) в свой собственный документ Word.

Если вы работаете с ленточной версией Word, сохраните файл как файл с поддержкой макросов следующим образом:

  1. Перейдите на вкладку "Файл" и выберите "Сохранить как" на левой панели.
  2. Укажите расположение папки.
  3. В диалоговом окне «Сохранить как» выберите «Документ Word с поддержкой макросов» (*.docm) из раскрывающегося списка "Тип файла" (рис. D).
  4. Нажмите "Сохранить".

Рисунок D

Вы должны сохранить документ версии ленты как документ с поддержкой макросов; Пользователи Word 2003 могут пропустить этот шаг.

Теперь вы готовы ввести подпроцедуру (макрос) в VBE следующим образом:

  1. Нажмите [Alt]+[F11] или перейдите на вкладку "Разработчик" и нажмите Visual Basic в группе "Код", чтобы открыть VBE.
  2. В обозревателе проектов VBE выберите соответствующий файл документа (при необходимости).
  3. Выберите «Модуль» в меню «Вставка».
  4. Введите код удобным для вас способом.
  5. Вернитесь к документу и сохраните его.

Как работает макрос

Процедура использует массив строк, объявленный

Затемнить WordCollection(2) как строку

для сохранения каждого слова или фразы, которые вы хотите выделить. Аргументом является значение 2. Чтобы настроить эту коллекцию для вашего собственного списка, это значение должно быть на единицу меньше, чем количество слов в вашей коллекции (наборы начинаются со значения индекса 0). В нашем примере следующие операторы добавляют три строки поиска в массив WordCollection:

WordCollection(0) = "очень"
WordCollection(1) = "просто"
WordCollection(2) = "конечно"

Здесь вы добавите свои собственные условия поиска при настройке макроса для собственного использования.

Поскольку функция Word «Найти и заменить» запоминает ваши последние настройки, следующие два оператора очищают предыдущие настройки. Затем оператор

задает цвет выделения. Если вы опустите этот оператор, Word по умолчанию использует текущую настройку, которая может вообще не выделяться. Вы можете изменить это на любую константу выделения, которую хотите.

Первый оператор For Each выполняет циклический просмотр документа. Второй циклически перебирает коллекцию WordCollection.

Оператор

— это версия VBA для указания формата в опции Word «Заменить на». Большинство других опций не являются строго необходимыми, но, установив их явно, вы избежите неожиданных результатов. Макрос оценивает весь документ, поэтому не имеет значения, где находится ваш курсор, когда вы выполняете макрос.

Запуск макроса

Теперь давайте запустим макрос и посмотрим, что произойдет. Помните, наша коллекция включает три строки поиска: очень, просто и конечно. Чтобы запустить макрос, сделайте следующее;

  1. Перейдите на вкладку "Разработчик".
  2. Нажмите «Макросы» в группе «Код».
  3. В появившемся диалоговом окне выберите HighlightWords (рис. E) и нажмите "Выполнить".

Рисунок E

Запустите макрос.

На рис. F показаны результаты.

Рисунок F

Макрос выделяет строки поиска.

Когда вы будете готовы убрать выделение, вы можете сделать это, как обычно.

Нет вкладки "Разработчик"?

Если вкладка "Разработчик" недоступна, отобразите ее следующим образом:

  1. Перейдите на вкладку "Файл" и выберите "Параметры".
  2. Выберите «Настроить ленту» на левой панели.
  3. В списке справа отметьте параметр "Разработчик" (рис. G).
  4. Нажмите "ОК".

Рисунок G

Добавьте на ленту вкладку "Разработчик".

Легкий доступ

Вы можете добавить подпроцедуру (как макрос) на панель быстрого доступа (QAT) или создать настраиваемую вкладку для своих макросов. Прочтите Два простых способа настроить интерфейс ленты, чтобы получить инструкции по этому поводу. Если вы используете Word 2003, прочтите статью Добавление меню пользовательского макроса в Word.

VBAX Newbie Присоединился к нам в феврале 2010 г. Сообщения 3 Местоположение

Найти ТОЛЬКО определенные выделенные слова - VBA

Мне нужна помощь с кодом VBA, где выделен ТОЛЬКО один определенный цвет текста (например, слово, выделенное ЯРКО-зеленым (wdBrightGreen) ), а цвет для выделенного текста удален. Я использовал приведенный ниже код, чтобы удалить выделение, которое следует после кода поиска, но код, который я использовал, находит весь выделенный текст независимо от того, какого он цвета:

[VBA]
While Selection.Find.Execute = True
Selection.Range.HighlightColorIndex = wdNoHighlight
Wend
[/VBA]
Мне нужно это в два пути. Во-первых, выбрать весь текст, выделенный ярко-зеленым, и удалить выделение в одном экземпляре во всем документе, а во-вторых, найти одно слово за раз и удалить только один раз, чтобы я мог иметь надлежащий контроль.Я использовал следующий код макроса, который не позволяет мне выбирать определенный цвет, но находит текст, который выделен.

[VBA]
Public Sub callChoice()
If MyFrm.optWord.Value = True Then
Selection.HomeKey Unit:=wdStory
Selection. Find.ClearFormatting
Selection.Find.Highlight = True
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Highlight = False
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Конец
Selection.Find.Execute

С выделением
Если .Find.Forward = True Then
.Collapse Direction:=wdCollapseStart
иначе
.Collapse Direction:=wdCollapseEnd
End If
.Find.Execute Replace:=wdReplaceOne
Если .Find.Forward = True Then
.Collapse Direction:=wdCollapseEnd
Еще
.Collapse Direction:=wdCollapseStart
>End If
.Find.Execute
End With
ElseIf MyFrm.optDoc.Value = True Then
Unload MyFrm
Application.ScreenUpdating = False

Selection.WholeStory
Options.DefaultHighlightColorIndex = wdNoHighlight
Selection.Range.HighlightColorIndex = wdNoHighlight
MsgBox ("Все выделения в документе удалены")
Selection.HomeKey Модуль:=wdStory

Application.ScreenUpdating = True
End If
End Sub
[/VBA]

Модератор VBAX Wizard Присоединился к нам с июня 2004 г. Местонахождение Талса, Оклахома Сообщений: 7 323 Местонахождение

Выберите код и нажмите кнопку vba, чтобы отформатировать код для форума.

Мне придется поручить кому-то другому помочь с вашей проблемой. Добро пожаловать на доску.

Стив
"Почти все мужчины могут выдержать невзгоды, но если вы хотите проверить характер человека, дайте ему силу."
-Авраам Линкольн

Амир использует разные цвета выделения в своих документах. Когда он использует «Найти и заменить», чтобы найти выделенный текст, все цвета выделения обрабатываются одинаково. Амир хотел бы, в частности, использовать функцию «Найти и заменить», чтобы находить только текст, выделенный желтым цветом, и игнорировать любой другой цвет выделения, используемый в документе.

Прежде чем перейти к тому, как это сделать, важно немного обсудить термины. При использовании термина «цвет выделения» некоторые люди думают, что он относится к цвету, применяемому к определенному тексту; это не. Подсветка не меняет цвет шрифта. Выделение выполняется с помощью инструмента «Цвет выделения текста», доступного в группе «Шрифт» на вкладке «Главная» ленты. (См. рис. 1.)

Рисунок 1. Word позволяет выделять текст разными цветами.

При использовании диалогового окна "Найти и заменить" вы можете указать, что хотите искать выделенный текст. (Поместите точку вставки в поле «Найти», нажмите «Формат», затем нажмите «Выделить».) Когда вы нажимаете «Найти далее», Word выбирает следующий выделенный текст, независимо от цвета, использованного для выделения этого текста. Другими словами, вы не можете указать, что хотите найти только текст, выделенный желтым, синим, зеленым или любым другим цветом; все обрабатываются одинаково.

Нам не удалось найти надежный способ обойти это. Некоторая информация, которую мы видели, указывает на то, что Word найдет только тот цвет выделения, который указан в инструменте «Цвет выделения текста», но это не так. Другие люди указали, что если вы выберете какой-либо выделенный текст (который выделен цветом, который вы хотите найти) перед отображением диалогового окна «Найти и заменить», только этот цвет выделения будет найден, когда вы нажмете «Найти далее». Это тоже неправда. Во всех случаях функция «Найти далее» найдет любой выделенный текст, независимо от цвета, использованного для выделения.

Единственный способ обойти это — использовать макрос для поиска. VBA позволяет определить цвет, используемый для выделения текста, поэтому этот подход будет работать. Следующий макрос использует поиск и замену для поиска, но затем проверяет, какое свойство HighlightColorIndex соответствует тому, что было найдено. Если он равен wdYellow (перечисление желтого цвета), то текст выделяется и макрос закрывается.

Вы можете искать разные цвета, просто изменив перечисление wdYellow на перечисление любого нужного цвета.

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

Советы по Word – это экономичное обучение работе с Microsoft Word. (Microsoft Word — самое популярное программное обеспечение для обработки текстов в мире.) Этот совет (13552) относится к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365.

Биография автора

На его счету более 50 научно-популярных книг и множество журнальных статей. Аллен Уайатт является всемирно признанным автором. Он является президентом Sharon Parq Associates, компании, предоставляющей компьютерные и издательские услуги. Узнайте больше об Аллене.

Читайте также: