Практическое руководство. Поиск текста в документах
Обновлен: Ноябрь 2007
Применение |
---|
Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office. Тип проекта
Версия Microsoft Office
Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов. |
Объект Find является членом обоих объектов — Selection и Range, — поэтому любой из них можно использовать для поиска текста в документах Microsoft Office Word. Команда замены является расширением команды поиска. Дополнительные сведения о замене текста в документах см. в разделе Практическое руководство. Поиск и замена текста в документах.
Использование объекта Selection
Если для поиска текста используется объект Selection, все указанные условия поиска применяются только к выделенному в данный момент тексту. Если Selection является позицией курсора, поиск осуществляется по всему документу. Элемент, найденный в соответствии с условиями поиска, автоматически выделяется.
Обратите внимание, что условие Find является кумулятивным — это означает, что каждое условие добавляется к предыдущим условиям поиска. Перед выполнением поиска для удаления предыдущих условий (снятия форматирования) вызовите метод ClearFormatting.
Чтобы найти текст, используя объект Selection
Присвойте переменной строку поиска.
Dim findText As String = "find me"
object findText = "find me";
Снимите форматирование, установленное при выполнении предыдущего поиска.
Application.Selection.Find.ClearFormatting()
Application.Selection.Find.ClearFormatting();
Выполните поиск и отобразите в окне сообщения его результаты.
If Application.Selection.Find.Execute(findText) = True Then MessageBox.Show("Text found.") Else MessageBox.Show("The text could not be located.") End If
if (Application.Selection.Find.Execute(ref findText, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing)) { MessageBox.Show("Text found."); } else { MessageBox.Show("The text could not be located."); }
Ниже приведен полный пример.
Private Sub SelectionFind()
Dim findText As String = "find me"
Application.Selection.Find.ClearFormatting()
If Application.Selection.Find.Execute(findText) = True Then
MessageBox.Show("Text found.")
Else
MessageBox.Show("The text could not be located.")
End If
End Sub
private void SelectionFind()
{
object findText = "find me";
Application.Selection.Find.ClearFormatting();
if (Application.Selection.Find.Execute(ref findText,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing))
{
MessageBox.Show("Text found.");
}
else
{
MessageBox.Show("The text could not be located.");
}
}
Использование объекта Range
С помощью объекта Range можно искать текст, ничего не отображая в пользовательском интерфейсе. Объект Find возвращает True, если найден текст, соответствующий условиям поиска, и False в противном случае. Если текст найден, он также переопределяет объект Range для соответствия условиям поиска.
Чтобы выполнить поиска текста, используя объект Range
Определите объект Range как состоящий из второго абзаца документа.
Приведенный ниже пример кода можно использовать в настройке на уровне документа.
Dim rng As Word.Range = Me.Paragraphs(2).Range
Word.Range rng = this.Paragraphs[2].Range;
Приведенный ниже пример кода можно использовать в надстройке уровня приложения. В этом примере используется активный документ.
Dim rng As Word.Range = Me.Application.ActiveDocument.Paragraphs(2).Range
Word.Document document = this.Application.ActiveDocument; Word.Range rng = document.Paragraphs[2].Range;
Используя свойство Find объекта Range сначала очистите все параметры форматирования, а затем выполните поиск строки find me.
rng.Find.ClearFormatting() If rng.Find.Execute(findText) Then
rng.Find.ClearFormatting(); if (rng.Find.Execute(ref findText, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing)) {
Отобразите результаты поиска в окне сообщения и выделите абзац Range, чтобы сделать его видимым.
MessageBox.Show("Text found.") Else MessageBox.Show("Text not found.") End If rng.Select()
MessageBox.Show("Text found."); } else { MessageBox.Show("Text not found."); } rng.Select();
Если строку найти не удалось, то второй абзац будет выделен, а если удалось — будут отображены результаты поиска.
Ниже приведен полный код примера для настройки на уровне документа. Чтобы воспользоваться этим примером, запустите его из класса ThisDocument своего проекта.
Private Sub RangeFind()
Dim findText As String = "find me"
Dim rng As Word.Range = Me.Paragraphs(2).Range
rng.Find.ClearFormatting()
If rng.Find.Execute(findText) Then
MessageBox.Show("Text found.")
Else
MessageBox.Show("Text not found.")
End If
rng.Select()
End Sub
private void RangeFind()
{
object findText = "find me";
Word.Range rng = this.Paragraphs[2].Range;
rng.Find.ClearFormatting();
if (rng.Find.Execute(ref findText,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing))
{
MessageBox.Show("Text found.");
}
else
{
MessageBox.Show("Text not found.");
}
rng.Select();
}
Ниже приведен полный код примера для надстройки уровня приложения. Чтобы воспользоваться этим примером, запустите его из класса ThisAddIn своего проекта.
Private Sub RangeFind()
Dim findText As Object = "find me"
Dim rng As Word.Range = Me.Application.ActiveDocument.Paragraphs(2).Range
rng.Find.ClearFormatting()
If rng.Find.Execute(findText) Then
MessageBox.Show("Text found.")
Else
MessageBox.Show("Text not found.")
End If
rng.Select()
End Sub
private void RangeFind()
{
object findText = "find me";
Word.Document document = this.Application.ActiveDocument;
Word.Range rng = document.Paragraphs[2].Range;
rng.Find.ClearFormatting();
if (rng.Find.Execute(ref findText,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing))
{
MessageBox.Show("Text found.");
}
else
{
MessageBox.Show("Text not found.");
}
rng.Select();
}
См. также
Задачи
Практическое руководство. Поиск и замена текста в документах
Практическое руководство. Установка параметров поиска в документах Word
Практическое руководство. Элементы просмотра и поиска в документах
Практическое руководство. Определение и выделение диапазонов в документе
Практическое руководство. Восстановление выделения после поиска
Основные понятия
Общие сведения о необязательных параметрах в решениях Office