Cómo: buscar y reemplazar texto en documentos mediante programaciónHow to: Programmatically search for and replace text in documents

El objeto Find es miembro de los objetos Selection y Range y puede usar cualquiera de ellos para buscar texto en documentos de Microsoft Office Word.The Find object is a member of both the Selection and the Range objects, and you can use either one to search for text in Microsoft Office Word documents. El comando replace es una extensión del comando find.The replace command is an extension of the find command.

Use un objeto Find para recorrer un documento de Microsoft Office Word y buscar un determinado texto, formato o estilo y use la propiedad Replacement para reemplazar cualquiera de los elementos encontrados.Use a Find object to loop through a Microsoft Office Word document and search for specific text, formatting, or style, and use the Replacement property to replace any of the items found.

Se aplica a: la información de este tema se aplica al documento-proyectos y agregar de VSTO de nivel-en los proyectos de Word.Applies to: The information in this topic applies to document-level projects and VSTO Add-in projects for Word. Para obtener más información, consulte características disponibles por tipo de aplicación y el proyecto de Office.For more information, see Features available by Office application and project type.

Usar un objeto de selecciónUse a Selection object

Cuando se usa un objeto Selection para buscar texto, los criterios de búsqueda que especifique se aplicarán únicamente al texto actualmente seleccionado.When you use a Selection object to find text, any search criteria you specify are applied only against currently selected text. Si la Selection es un punto de inserción, se buscará en el documento.If the Selection is an insertion point, then the document is searched. Cuando se encuentra el elemento que coincide con los criterios de búsqueda, se selecciona automáticamente.When the item is found that matches the search criteria, it is automatically selected.

Es importante tener en cuenta que los criterios Find son acumulativos, lo que significa que se agregan a los criterios de búsqueda anteriores.It is important to note that the Find criteria are cumulative, which means that criteria are added to previous search criteria. Borre el formato de las búsquedas anteriores mediante el método ClearFormatting antes de hacer la búsqueda.Clear formatting from previous searches by using the ClearFormatting method prior to the search.

Para buscar texto mediante un objeto de selecciónTo find text using a Selection object

  1. Asigne una cadena de búsqueda a una variable.Assign a search string to a variable.

    Dim findText As String = "find me"
    
    object findText = "find me";
    
  2. Borre el formato de las búsquedas anteriores.Clear formatting from previous searches.

    Application.Selection.Find.ClearFormatting()
    
    Application.Selection.Find.ClearFormatting();
    
  3. Ejecute la búsqueda y se mostrará un cuadro de mensaje con los resultados.Execute the search and display a message box with the results.

    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.");
    } 
    

    En el siguiente ejemplo se muestra el método completo.The following example shows the complete method.

    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.");
        } 
    }
    

Use un objeto RangeUse a Range object

Los objetos Range le permiten buscar texto sin mostrar nada en la interfaz de usuario.Using a Range object enables you to search for text without displaying anything in the user interface. El Find objeto devuelve True si se encuentra texto que coincide con los criterios de búsqueda, y False si no es así.The Find object returns True if text is found that matches the search criteria, and False if it does not. También redefine el objeto Range para que coincida con los criterios de búsqueda si se encuentra el texto.It also redefines the Range object to match the search criteria if the text is found.

Para buscar texto con un objeto RangeTo find text using a Range object

  1. Defina un objeto Range formado por el segundo párrafo del documento.Define a Range object that consists of the second paragraph in the document.

    El siguiente ejemplo de código se puede usar en una personalización de nivel de documento.The following code example can be used in a document-level customization.

    Dim rng As Word.Range = Me.Paragraphs(2).Range
    
    Word.Range rng = this.Paragraphs[2].Range; 
    

    El siguiente ejemplo de código se puede usar en un complemento de VSTO.The following code example can be used in a VSTO Add-in. En este ejemplo se usa el documento activo.This example uses the active document.

    Dim rng As Word.Range = Me.Application.ActiveDocument.Paragraphs(2).Range
    
    Word.Document document = this.Application.ActiveDocument;
    Word.Range rng = document.Paragraphs[2].Range;
    
  2. Mediante el Find propiedad de la Range objeto, en primer lugar borre las opciones de formato existentes y, a continuación, busque la cadena encontrarme.Using the Find property of the Range object, first clear any existing formatting options, and then search for the string 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)) 
    { 
    
  3. Se mostrarán los resultados de la búsqueda en un cuadro de mensaje; seleccione Range para que sea visible.Display the results of the search in a message box, and select the Range to make it visible.

        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(); 
    

    Si se produce un error en la búsqueda, se seleccionará el segundo párrafo; si se hace correctamente, se mostrarán los criterios de búsqueda.If the search fails, the second paragraph is selected; if it succeeds, the search criteria are displayed.

    En el siguiente ejemplo se muestra el código completo de una personalización de nivel de documento.The following example shows the complete code for a document-level customization. Para usar este ejemplo, ejecute el código desde la clase ThisDocument del proyecto.To use this example, run the code from the ThisDocument class in your project.

    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(); 
    }
    

    En el siguiente ejemplo se muestra el código completo de un complemento de VSTO.The following example shows the complete code for a VSTO Add-in. Para usar este ejemplo, ejecute el código desde la clase ThisAddIn del proyecto.To use this example, run the code from the ThisAddIn class in your project.

    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();
    }
    

Buscar y reemplazar texto en documentosSearch for and replace text in documents

El código siguiente busca la selección actual y reemplaza todas las apariciones de la cadena encontrarme con la cadena Found.The following code searches the current selection and replaces all of the occurrences of the string find me with the string Found.

Para buscar y reemplazar texto en documentosTo search for and replace text in documents

  1. Agregue el siguiente código de ejemplo a la clase ThisDocument o ThisAddIn del proyecto.Add the following example code to the ThisDocument or ThisAddIn class in your project.

    Private Sub SearchReplace()
        Dim FindObject As Word.Find = Application.Selection.Find
        With FindObject
            .ClearFormatting()
            .Text = "find me"
            .Replacement.ClearFormatting()
            .Replacement.Text = "Found"
            .Execute(Replace:=Word.WdReplace.wdReplaceAll)
        End With
    End Sub
    
    private void SearchReplace()
    {
        Word.Find findObject = Application.Selection.Find;
        findObject.ClearFormatting();
        findObject.Text = "find me";
        findObject.Replacement.ClearFormatting();
        findObject.Replacement.Text = "Found";
    
        object replaceAll = Word.WdReplace.wdReplaceAll;
        findObject.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);
    }
    

    La clase Find tiene un método ClearFormatting y la clase Microsoft.Office.Interop.Word.Replacement también tiene su propio método ClearFormatting.The Find class has a ClearFormatting method, and the Microsoft.Office.Interop.Word.Replacement class also has its own ClearFormatting method. Al realizar operaciones de búsqueda y reemplazo, debe usar el método ClearFormatting de ambos objetos.When you are performing find-and-replace operations, you must use the ClearFormatting method of both objects. Si solo lo usa en el objeto Find, podría obtener resultados imprevistos en el texto de reemplazo.If you use it only on the Find object, you might get unanticipated results in the replacement text.

  2. Use el método Execute del objeto Find para reemplazar los elementos encontrados.Use the Execute method of the Find object to replace each found item. Para especificar los elementos que desea reemplazar, use el reemplazar parámetro.To specify which items to replace, use the Replace parameter. Este parámetro puede ser uno de los siguientes valores Microsoft.Office.Interop.Word.WdReplace:This parameter can be one of the following Microsoft.Office.Interop.Word.WdReplace values:

Vea tambiénSee also

Cómo: establecer opciones de búsqueda en Word mediante programación How to: Programmatically set search options in Word
Cómo: recorrer en iteración mediante programación los elementos encontrados en documentos How to: Programmatically loop through found items in documents
Cómo: definir y seleccionar rangos en documentos mediante programación How to: Programmatically define and select ranges in documents
Cómo: restaurar selecciones después de realizar búsquedas mediante programación How to: Programmatically restore selections after searches
Parámetros opcionales en las soluciones de OfficeOptional parameters in Office solutions