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

可通过三种主要方式将文本插入 Microsoft Office Word 文档:

  • 在范围中插入文本。

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

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

说明说明

也可以将文本插入内容控件和书签。有关更多信息,请参见内容控件Bookmark 控件

**适用于:**本主题中的信息适用于 Word 2013 和 Word 2010 的文档级项目和应用程序级项目。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能

在范围中插入文本

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

在范围中插入文本

  1. 在文档开头指定一个范围,并插入文本“新文本”。

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

    Dim rng As Word.Range = Me.Range(Start:=0, End:=0)
    rng.Text = " New Text "
    
    object start = 0; 
    object end = 0; 
    
    Word.Range rng = this.Range(ref start, ref end); 
    rng.Text = "New Text"; 
    

    下面的代码示例可用于应用程序级外接程序。此代码使用活动文档。

    Dim rng As Word.Range = Me.Application.ActiveDocument.Range(Start:=0, End:=0)
    rng.Text = " New Text "
    
    Word.Range rng = this.Application.ActiveDocument.Range(0, 0);
    rng.Text = "New Text";
    
  2. 选择 Range 对象,该对象已从一个字符扩展为所插入文本的长度。

    rng.Select()
    
    rng.Select();
    

在范围中替换文本

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

在范围中替换文本

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

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

    Dim rng As Word.Range = Me.Range(Start:=0, End:=12)
    
    object start = 0; 
    object end = 12; 
    
    Word.Range rng = this.Range(ref start, ref end); 
    

    下面的代码示例可用于应用程序级外接程序。此代码使用活动文档。

    Dim rng As Word.Range = Me.Application.ActiveDocument.Range(Start:=0, End:=12)
    
    Word.Range rng = this.Application.ActiveDocument.Range(0, 12);
    
  2. 将这些字符替换为字符串“新文本”。

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

    rng.Select()
    
    rng.Select();
    

使用 TypeText 插入文本

TypeText 方法在选定内容处插入文本。TypeText 的行为因用户计算机上设置的选项而异。以下过程中的代码声明一个 Selection 对象变量,然后关闭 Overtype 选项(如果它处于打开状态)。如果激活了 Overtype 选项,则会覆盖光标旁边的任何文本。

使用 TypeText 方法插入文本

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

    Dim currentSelection As Word.Selection = Application.Selection
    
    Word.Selection currentSelection = Application.Selection; 
    
  2. 如果 Overtype 选项是打开的,则将其关闭。

    If Application.Options.Overtype Then
        Application.Options.Overtype = False
    End If
    
    if (Application.Options.Overtype) 
    { 
        Application.Options.Overtype = false; 
    } 
    
  3. 测试当前选定内容是否是插入点。

    如果是,则代码会使用 TypeText 插入句子,然后使用 TypeParagraph 方法插入段落标记。

    With currentSelection
    
        ' Test to see if selection is an insertion point.
        If .Type = Word.WdSelectionType.wdSelectionIP Then
            .TypeText("Inserting at insertion point. ")
            .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 方法将选定内容折叠到选定的文本块开头的插入点。插入文本和段落标记。

    ElseIf .Type = Word.WdSelectionType.wdSelectionNormal Then
        ' Move to start of selection.
        If Application.Options.ReplaceSelection Then
            .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseStart)
        End If
        .TypeText("Inserting before a text block. ")
        .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();
        }
    
  5. 如果选定内容既不是插入点也不是选定的文本块,则 Else 块中的代码不执行任何操作。

    Else
        ' Do nothing.
    End If
    
    else
    {
        // Do nothing.
    }
    

还可以使用 Selection 对象的 TypeBackspace 方法,该方法模拟键盘上的 Backspace 键的功能。不过,在需要插入并处理文本时,Range 对象可以为您提供更多的控制。

下面的示例演示完整的代码。若要使用此示例,请从项目内的 ThisDocument 或 ThisAddIn 类中运行代码。

Friend Sub SelectionInsertText()
    Dim currentSelection As Word.Selection = Application.Selection

    ' Store the user's current Overtype selection
    Dim userOvertype As Boolean = Application.Options.Overtype

    ' Make sure Overtype is turned off.
    If Application.Options.Overtype Then
        Application.Options.Overtype = False
    End If

    With currentSelection

        ' Test to see if selection is an insertion point.
        If .Type = Word.WdSelectionType.wdSelectionIP Then
            .TypeText("Inserting at insertion point. ")
            .TypeParagraph()

        ElseIf .Type = Word.WdSelectionType.wdSelectionNormal Then
            ' Move to start of selection.
            If Application.Options.ReplaceSelection Then
                .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseStart)
            End If
            .TypeText("Inserting before a text block. ")
            .TypeParagraph()

        Else
            ' Do nothing.
        End If
    End With

    ' Restore the user's Overtype selection
    Application.Options.Overtype = userOvertype
End Sub
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;
}

请参见

任务

如何:以编程方式在文档中设置文本格式

如何:以编程方式在文档中定义和选择范围

如何:以编程方式在文档中扩展范围