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

Больше
7 года 6 мес. назад - 7 года 6 мес. назад #13 от nikolaevrn
Рассмотрим пример реализации задачи, которая выполняет поиск необходимой информации в документе (*.doc) с последующим её выделением в нужный цвет.
Данная задача может быть решена стандартными формами (без использования программирования на языке VBA) только в том случае если Вам нужно осуществить поиск нескольких слов. В случае необходимости поиска десятков (сотен) разных слов или словосочетаний в документе (или документах) данный процесс удобно автоматизировать.
Рассмотрим пример реализации данной задачи на языке VBA в программе Word (2010).
Последнее редактирование: 7 года 6 мес. назад пользователем nikolaevrn.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
7 года 6 мес. назад - 7 года 6 мес. назад #14 от nikolaevrn
Пример реализации скрипта VBA в программе Word (2010).
Программа состоит из двух функций и основной программы:
1. функция 'base_line_func' - функция, в которой хранится база данных слов (словосочетаний) для поиска;
2. функция 'Select_Find_name' - функция, которая выполняет поиск и выделение нужных слов.
3. Модуль 'Select_Doc' - программа, которая взаимодействует с двумя функциями. В результате работы данной программы выполняется поиск определенных слов (словосочетаний) в документе (слова из базы данных 'base_line_func') и их выделение.


' -> Создаем функцию для хранения базы данных имен
Function base_line_func(i_user)
base_line = Array( _
"Антон", "Сергей", "Татьяна", "Роман", _
"")
base_line_func = base_line(i_user)

'Определение размера массива
'n_base_line = UBound(base_line) - LBound(base_line) + 1
End Function
'<- Закрываем функцию


' Создаем функцию поиска переменной "example" и выделение найденного цвета ->
Function Select_Find_name(example As String) As String

' Options.DefaultHighlightColorIndex = wdYellow
' (с помощью данной команды изменяется выделение цвета (подсвечивание текста))

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Highlight = True

Selection.Find.Replacement.Font.color = wdColorGreen
' (с помощью данной команды изменяется цвет текста)

With Selection.Find
.Text = example
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Function
' Закрываем функцию <-


' Основной модуль программы, который выполняет поиск слов из базы данных
' в документе Word с последующим их выделением в тексте ->

Sub Select_Doc()

'-> Блок №1: загружаем названия из функции в переменную base_line()
Dim base_line() As String
user_i = 0
Do While base_line_func(user_i) <> ""
ReDim Preserve base_line(user_i)
base_line(user_i) = base_line_func(user_i)
user_i = user_i + 1
Loop
'в результате: i - размерность массива, base_line - текстовая матрица названий
' <- Конец блока №1

'-> Блок №2. вызов функции поиска слов (словосочетаний)
For i = 0 To user_i - 1
Select_Find_name (base_line(i))
Next i
'<- Конец блока №2

End Sub
Последнее редактирование: 7 года 6 мес. назад пользователем nikolaevrn.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.096 секунд