Como localizar e substituir texto em documentos programaticamente
O objeto de Find é um membro de Selection e objetos de Range , e você pode usar um para procurar pelo texto em documentos Microsoft Office Word.Substitua o comando é uma extensão de comando de localização.
Use um objeto de Find o loop com um documento e uma pesquisa Microsoft Office Word para texto, formatação, ou o estilo específico e, use a propriedade de Replacement para substituir qualquer um dos itens localizados.
Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Word 2013 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.
Usando um objeto de seleção
Quando você usa um objeto de Selection para localizar o texto, todos os critérios de pesquisa que você especifique são aplicados somente com o texto atualmente selecionado.Se Selection é um ponto de inserção, então o documento é procurado.Quando o item for encontrado que corresponde aos critérios de pesquisa, é automaticamente selecionado.
É importante observar que os critérios de Find são cumulativos, o que significa que os critérios são adicionados aos critérios de pesquisa anteriores.Formatação claro das pesquisas anteriores usando o método de ClearFormatting antes de pesquisa.
Para localizar texto usando um objeto de seleção
Atribuir uma cadeia de caracteres de pesquisa a uma variável.
Dim findText As String = "find me"
object findText = "find me";
Desmarque a formatação das pesquisas anteriores.
Application.Selection.Find.ClearFormatting()
Application.Selection.Find.ClearFormatting();
Executar uma pesquisa e exibir uma caixa de mensagem com os resultados.
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."); }
O exemplo a seguir mostra o método completo.
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.");
}
}
Usando um objeto de intervalo
Usar um objeto de Range permite que você procurar pelo texto sem exibir algo na interface do usuário.O objeto de Find retorna True se o texto estiver localizado que corresponde aos critérios de pesquisa, e False caso contrário.Também redefine o objeto de Range para coincidir com os critérios de pesquisa se o texto for encontrado.
Para localizar texto usando um objeto de intervalo
Defina um objeto de Range que consiste no segundo parágrafo no documento.
O exemplo de código pode ser usado em uma personalização da nível.
Dim rng As Word.Range = Me.Paragraphs(2).Range
Word.Range rng = this.Paragraphs[2].Range;
O exemplo de código pode ser usado em um suplemento ao aplicativo.este exemplo usa o documento ativo.
Dim rng As Word.Range = Me.Application.ActiveDocument.Paragraphs(2).Range
Word.Document document = this.Application.ActiveDocument; Word.Range rng = document.Paragraphs[2].Range;
Usando a propriedade de Find do objeto de Range primeiro, desmarque todas as opções de formatação existentes, e procurare-as na cadeia de caracteres localizar-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)) {
Exibir os resultados da pesquisa em uma caixa de mensagem, e selecione Range para torná-lo visível.
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();
Se a pesquisa falhar, o segundo parágrafo está selecionado; se tiver êxito, os critérios de pesquisa são exibidos.
O exemplo a seguir mostra o código completo para uma personalização da nível.Para usar este exemplo, execute o código de classe de ThisDocument em seu projeto.
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();
}
O exemplo a seguir mostra o código completo para um suplemento ao aplicativo.Para usar este exemplo, execute o código de classe de ThisAddIn em seu projeto.
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();
}
Procure e substitua o texto em documentos
O código a seguir procura a seleção atual e substitua todas as ocorrências da cadeia de caracteres localizar-me com a cadeia de caracteres funde.
Para procurar por e substitua o texto em documentos
Adicione o seguinte exemplo de código à classe de ThisDocument ou de ThisAddIn em seu projeto.
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); }
A classe de Find tem um método de ClearFormatting , e a classe de Replacement também tem seu próprio método de ClearFormatting .Quando você estiver executando operações de localização e substituição, você deve usar o método de ClearFormatting dos dois objetos.Se você utiliza apenas no objeto de Find , você pode obter resultados não-antecipados no texto de substituição.
Use o método de Execute do objeto de Find para substituir cada item encontrado.Para especificar que os itens para substituir, usa o parâmetro de Replace .Este parâmetro pode ser um dos seguintes valores de WdReplace :
wdReplaceAll substitui os itens localizados.
wdReplaceNone não substitui nenhum dos itens localizados.
wdReplaceOne substitui o primeiro item encontrado.
Consulte também
Tarefas
Como definir opções de pesquisa no Word programaticamente
Como percorrer itens encontrados em documentos programaticamente
Como definir e selecionar intervalos em documentos programaticamente
Como restaurar seleções após pesquisas programaticamente