以编程方式循环访问文档中找到的项目

Find 类具有一个 Found 属性,每当找到搜索项时,该属性将 返回 true 。 你可以使用 Range 方法循环访问在 Execute 中找到的所有实例。

适用于: 本主题中的信息适用于 Word 的文档级项目和 VSTO 外接程序项目。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。

循环访问找到的项

  1. 声明 Range 对象。

    下面的代码示例可用于文档级自定义项。

    Word.Range rng = this.Content;
    

    以下代码示例可用于 VSTO 外接程序。 本示例使用活动文档。

    Word.Document document = this.Application.ActiveDocument;
    Word.Range rng = document.Content;
    
  2. 循环使用 Found 属性来搜索文档中字符串的所有匹配项,每次找到该字符串时整数变量递增 1。

    rng.Find.ClearFormatting(); 
    rng.Find.Forward = true; 
    rng.Find.Text = "find me"; 
    
    rng.Find.Execute(
        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, ref missing);
    
    while (rng.Find.Found) 
    { 
        intFound++;
        rng.Find.Execute(
            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, ref missing);
    }
    
  3. 在消息框中显示找到字符串的次数。

    MessageBox.Show("Strings found: " + intFound.ToString());
    

    以下示例显示了完整方法。

文档级自定义示例

循环访问文档级自定义项中的项

  1. 下面的示例显示文档级自定项的完整代码。 若要使用此代码,请从项目中的 ThisDocument 类运行它。

    private void FindLoop() 
    { 
        int intFound = 0; 
        Word.Range rng = this.Content; 
    
        rng.Find.ClearFormatting(); 
        rng.Find.Forward = true; 
        rng.Find.Text = "find me"; 
    
        rng.Find.Execute(
            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, ref missing);
    
        while (rng.Find.Found) 
        { 
            intFound++;
            rng.Find.Execute(
                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, ref missing);
        } 
    
        MessageBox.Show("Strings found: " + intFound.ToString()); 
    }
    

VSTO 外接程序示例

循环访问 VSTO 外接程序中的项

  1. 下面的示例显示 VSTO 外接程序的完整代码。 若要使用此代码,请从项目中的 ThisAddIn 类运行它。

    private void FindLoop()
    {
        int intFound = 0;
        Word.Document document = this.Application.ActiveDocument;
        Word.Range rng = document.Content;
    
        rng.Find.ClearFormatting();
        rng.Find.Forward = true;
        rng.Find.Text = "find me";
    
        rng.Find.Execute(
            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, ref missing);
    
        while (rng.Find.Found)
        {
            intFound++;
            rng.Find.Execute(
                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, ref missing);
        }
    
        MessageBox.Show("Strings found: " + intFound.ToString());
    }