Programmatically collapse ranges or selections in documents

If you are working with a Range or Selection object, you might want to change the selection to an insertion point before inserting text, to avoid overwriting existing text. Both the Range and Selection objects have a Collapse method, which makes use of the WdCollapseDirection enumeration values:

To collapse a range and insert new text

  1. Create a Range object that consists of the first paragraph in the document.

    The following code example can be used in a document-level customization.

    Word.Range rng = this.Paragraphs[1].Range;
    

    The following code example can be used in a VSTO Add-in. This code uses the active document.

    Word.Range rng = this.Application.ActiveDocument.Paragraphs[1].Range;
    
  2. Use the wdCollapseStart enumeration value to collapse the range.

    rng.Collapse(Word.WdCollapseDirection.wdCollapseStart);
    
  3. Insert the new text.

    rng.Text = " New Text ";
    
  4. Select the Range.

    rng.Select();
    

    If you use the wdCollapseEnd enumeration value, the text is inserted at the beginning of the following paragraph.

    rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
    

You might expect that inserting a new sentence would insert it before the paragraph marker, but that is not the case because the original range includes the paragraph marker.

Document-level customization example

To collapse a range in a document-level customization

  1. The following example shows the complete method for a document-level customization. To use this code, run it from the ThisDocument class in your project.

    Word.Range rng = this.Paragraphs[1].Range; 
    
    rng.Collapse(Word.WdCollapseDirection.wdCollapseStart); 
    
    rng.Text = " New Text ";
    rng.Select();
    

VSTO Add-in example

To collapse a range in a VSTO Add-in

  1. The following example shows the complete method for a VSTO Add-in. To use this code, run it from the ThisAddIn class in your project.

    Word.Range rng = this.Application.ActiveDocument.Paragraphs[1].Range;
    
    rng.Collapse(Word.WdCollapseDirection.wdCollapseStart);
    
    rng.Text = " New Text ";
    rng.Select();