Programmatically update bookmark text

You can insert text into a placeholder bookmark in a Microsoft Office Word document so that you can retrieve the text at a later time, or to replace text in a bookmark. If you are developing a document-level customization, you can also update text in a Bookmark control that is bound to data. For more information, see Bind data to controls in Office solutions.

Applies to: The information in this topic applies to document-level projects and VSTO Add-in projects for Word. For more information, see Features available by Office application and project type.

The bookmark object can be one of two types:

Use host controls

To update bookmark contents using a Bookmark control

  1. Create a procedure that takes a bookmark argument for the name of the bookmark, and a newText argument for the string to assign to the Text property.

    Note

    Assigning text to the Text or FormattedText property of a Bookmark control does not cause the bookmark to be deleted.

    static void BookMarkReplace(
        ref Microsoft.Office.Tools.Word.Bookmark bookmark, 
        string newText)
    {
    
  2. Assign the newText string to the Text property of the Bookmark.

        bookmark.Text = newText;
    }
    

Use Word objects

To update bookmark contents using a Word Bookmark object

  1. Create a procedure that has a bookmark argument for the name of the Bookmark, and a newText argument for the string to assign to the Text property of the bookmark.

    Note

    Assigning text to a native Word Bookmark object causes the bookmark to be deleted.

    internal void BookMarkReplaceNative(
        Word.Bookmark bookmark, 
        string newText)
    {
    
  2. Assign the newText string to the Text property of the bookmark, which automatically deletes the bookmark. Then re-add the bookmark to the Bookmarks collection.

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

        object rng = bookmark.Range;
        string bookmarkName = bookmark.Name;
    
        bookmark.Range.Text = newText;
    
        this.Bookmarks.Add(bookmarkName, ref rng); 
    }
    

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

        object rng = bookmark.Range;
        string bookmarkName = bookmark.Name;
    
        bookmark.Range.Text = newText;
    
        Word.Document document = this.Application.ActiveDocument;
        document.Bookmarks.Add(bookmarkName, ref rng);
    }