以编程方式在 Word 文档中插入文本

向 Microsoft Office Word 文档中插入文本主要有三种方式:

  • 在范围中插入文本。

  • 将范围中的文本替换为新文本。

  • 使用 TypeText 对象的 Selection 方法在光标或所选位置处插入文本。

注意

你还可以将文本插入到内容控件和书签中。 有关详细信息,请参阅 内容控件书签控件

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

注意

有兴趣开发跨多个平台扩展办公室体验的解决方案? 查看新的办公室外接程序模型。 与 VSTO 外接程序和解决方案相比,办公室外接程序的占用空间较小,可以使用几乎任何 Web 编程技术(如 HTML5、JavaScript、CSS3 和 XML)生成它们。

在区域中插入文本

使用 Text 对象的 Range 属性在文档中插入文本。

若要在范围中插入文本

  1. 在文档开头指定一个范围,并插入文本 New Text

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

    object start = 0; 
    object end = 0; 
    
    Word.Range rng = this.Range(ref start, ref end); 
    rng.Text = "New Text";
    

    以下代码示例可用于 VSTO 外接程序。 此代码运用了活动文档。

    Word.Range rng = this.Application.ActiveDocument.Range(0, 0);
    rng.Text = "New Text";
    
  2. 选择 Range 对象,该对象已从一个字符长度扩展到了插入文本的长度。

    rng.Select();
    

替换区域中的文本

如果指定的范围包含文本,则该范围中的所有文本将被插入的文本替换。

若要替换范围中的文本

  1. 创建一个 Range 对象,该对象包含文档中的前 12 个字符。

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

    object start = 0; 
    object end = 12; 
    
    Word.Range rng = this.Range(ref start, ref end);
    

    以下代码示例可用于 VSTO 外接程序。 此代码运用了活动文档。

    Word.Range rng = this.Application.ActiveDocument.Range(0, 12);
    
  2. 将这些字符替换为字符串 New Text

    rng.Text = "New Text";
    
  3. 选择范围。

    rng.Select();
    

使用 TypeText 插入文本

TypeText 方法可在所选位置处插入文本。 TypeText 的行为有所不同,具体取决于用户计算机上设置的选项。 以下过程中的代码声明了一个 Selection 对象变量,如果 Overtype 选项已打开,则会将其关闭。 如果 Overtype 选项已激活,则关闭旁的任何文本将被覆盖。

若要使用 TypeText 方法插入文本

  1. 声明一个 Selection 对象变量。

    Word.Selection currentSelection = Application.Selection;
    
  2. 如果 Overtype 选项已打开,请将其关闭。

    if (Application.Options.Overtype) 
    { 
        Application.Options.Overtype = false; 
    }
    
  3. 测试当前选择项是否未插入点。

    如果是,此代码将使用 TypeText插入一个句子,然后使用 TypeParagraph 方法插入段落标记。

    // Test to see if selection is an insertion point.
    if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP) 
    { 
        currentSelection.TypeText("Inserting at insertion point. ");
        currentSelection.TypeParagraph(); 
    }
    
  4. ElseIf 块中的代码用于测试选择项是否为正常选择项。 如果是,则另一个 If 块将测试 ReplaceSelection 选项是否已打开。 如果是,该代码将使用选择项的 Collapse 方法将选择项折叠为文本所选块起始处的插入点。 插入文本和段落标记。

    else 
        if (currentSelection.Type == Word.WdSelectionType.wdSelectionNormal)
        { 
            // Move to start of selection.
            if (Application.Options.ReplaceSelection)
            { 
                object direction = Word.WdCollapseDirection.wdCollapseStart;
                currentSelection.Collapse(ref direction);
            }
            currentSelection.TypeText("Inserting before a text block. ");
            currentSelection.TypeParagraph();
        }
    
  5. 如果选择项不是所选文本的插入点或块,则 Else 块中的代码将不会执行任何操作。

    else
    {
        // Do nothing.
    }
    

    还可以使用TypeBackspace对象的方法Selection,该方法模拟键盘上的 Backspace 键的功能。 但是,当涉及到插入和操作文本时,Range 对象将提供更多控件。

    以下示例显示了完整的代码。 若要使用此示例,请运行项目中的 ThisDocumentThisAddIn 类的代码。

    private void SelectionInsertText() 
    { 
        Word.Selection currentSelection = Application.Selection; 
    
        // Store the user's current Overtype selection
        bool userOvertype = Application.Options.Overtype;
    
        // Make sure Overtype is turned off.
        if (Application.Options.Overtype) 
        { 
            Application.Options.Overtype = false; 
        } 
    
        // Test to see if selection is an insertion point.
        if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP) 
        { 
            currentSelection.TypeText("Inserting at insertion point. ");
            currentSelection.TypeParagraph(); 
        } 
        else 
            if (currentSelection.Type == Word.WdSelectionType.wdSelectionNormal)
            { 
                // Move to start of selection.
                if (Application.Options.ReplaceSelection)
                { 
                    object direction = Word.WdCollapseDirection.wdCollapseStart;
                    currentSelection.Collapse(ref direction);
                }
                currentSelection.TypeText("Inserting before a text block. ");
                currentSelection.TypeParagraph();
            }
            else
            {
                // Do nothing.
            }
    
        // Restore the user's Overtype selection
        Application.Options.Overtype = userOvertype;
    }