Поделиться через


Практическое руководство. Программное восстановление выделения после поиска

Если производится поиск и замена текста в документе, возможно потребуется восстановление пользовательского выделения по завершении операции поиска.

Применение. Сведения этого раздела применяются к проектам уровня документа и уровня приложения для Word 2013 и Word 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.

Код в примере использует два объекта Range.Один из них сохраняет текущее выделение Selection, а другой делает весь документ диапазоном поиска.

Восстановление выделения пользователя после поиска

  1. Создайте объекты Range для документа и текущего выделения.

    Dim start As Word.Range = Application.Selection.Range
    Dim searchArea As Word.Range = Application.ActiveDocument.Range
    
    Word.Range start = Application.Selection.Range; 
    Word.Range searchArea = Application.ActiveDocument.Range(ref missing, ref missing); 
    
  2. Выполните операцию поиска и замены.

    searchArea.Find.ClearFormatting()
    searchArea.Find.Text = "find me"
    
    searchArea.Find.Replacement.ClearFormatting()
    searchArea.Find.Replacement.Text = "Found"
    
    searchArea.Find.Execute(Replace:=Word.WdReplace.wdReplaceAll)
    
    searchArea.Find.ClearFormatting(); 
    searchArea.Find.Text = "find me"; 
    
    searchArea.Find.Replacement.ClearFormatting(); 
    searchArea.Find.Replacement.Text = "Found"; 
    
    object replaceAll = Word.WdReplace.wdReplaceAll; 
    
    searchArea.Find.Execute(
        ref missing, ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing, ref missing,
        ref replaceAll, ref missing, ref missing, ref missing, ref missing);
    
  3. Выберите стартовый диапазон для восстановления выделения пользователя.

    start.Select()
    
    start.Select(); 
    

Ниже приведен полный пример метода.

Пример

Friend Sub ReplaceRestoreSelection()
    Dim start As Word.Range = Application.Selection.Range
    Dim searchArea As Word.Range = Application.ActiveDocument.Range

    searchArea.Find.ClearFormatting()
    searchArea.Find.Text = "find me"

    searchArea.Find.Replacement.ClearFormatting()
    searchArea.Find.Replacement.Text = "Found"

    searchArea.Find.Execute(Replace:=Word.WdReplace.wdReplaceAll)

    start.Select()
End Sub
internal void ReplaceRestoreSelection() 
{ 
    Word.Range start = Application.Selection.Range; 
    Word.Range searchArea = Application.ActiveDocument.Range(ref missing, ref missing); 

    searchArea.Find.ClearFormatting(); 
    searchArea.Find.Text = "find me"; 

    searchArea.Find.Replacement.ClearFormatting(); 
    searchArea.Find.Replacement.Text = "Found"; 

    object replaceAll = Word.WdReplace.wdReplaceAll; 

    searchArea.Find.Execute(
        ref missing, ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing, ref missing,
        ref replaceAll, ref missing, ref missing, ref missing, ref missing);

    start.Select(); 
}

См. также

Задачи

Практическое руководство. Программный поиск и замена текста в документах

Практическое руководство. Программное задание параметров поиска в Word

Практическое руководство. Программный перебор найденных элементов в документах

Основные понятия

Необязательные параметры в решениях Office