Programming with word in C# : Replace bookmark with actual values

Programming with word in C#  : Replace bookmark with actual values

Step 1 : Add a bookmark to work document ( for example StudentLetter.doc )

  1. Click where you want to insert a bookmark.
  2. On the Insert tab, in the Links group, click Bookmark.
  3. Under Bookmark name, type a name. For example StudentName 
  4. Click Add.

Step 2 : Create a C# project and Add reference to Microsoft Word Object Library

  1. Start Microsoft Visual Studio 2005 or Microsoft Visual Studio .NET.
  2. On the File menu, click New, and then click Project. Under Project Types, click Visual C# Projects, and then click Windows Application under Templates. Form1 is created by default.

    Note In Visual Studio 2005, click Visual C# instead of Visual C# Projects.

  3. Add a reference to Microsoft Word Object Library. To do this, follow these steps:
  4. On the Project menu, click Add Reference.
  5. On the COM tab, locate Microsoft Word Object Library, and then click Select.

Step 3 : Create instance of the Word application

Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();

Step 4 : Initialize  all the parameters

object fileName = @”C:TemplateStudentLetter.doc”;
object confirmConversions = Type.Missing;
object readOnly = Type.Missing;
object addToRecentFiles = Type.Missing; o
bject passwordDoc = Type.Missing;
object passwordTemplate = Type.Missing;
object revert = Type.Missing;
object writepwdoc = Type.Missing;
object writepwTemplate = Type.Missing;
object format = Type.Missing;
object encoding = Type.Missing;
object visible = Type.Missing;
object openRepair = Type.Missing;
object docDirection = Type.Missing;
object notEncoding = Type.Missing;
object xmlTransform = Type.Missing;

Step 5 : Create instance of document by passing above paramters

Microsoft.Office.Interop.Word .document doc = wordApp.Documents.Open(
ref fileName, ref confirmConversions, ref readOnly, ref addToRecentFiles,
ref passwordDoc, ref passwordTemplate, ref revert, ref writepwdoc,
ref writepwTemplate, ref format, ref encoding, ref visible, ref openRepair,
ref docDirection, ref notEncoding, ref xmlTransform);
Step 6 : Create to Common method to find a bookmark . If the bookmark exists replace it with text.
private void ReplaceBookmarkText ( 
Microsoft.Office.Interop.Word .document doc,
string bookmarkName,
string text)
if ( doc.Bookmarks.Exists(bookmarkName) )
Object name = bookmarkName;
Microsoft.Office.Interop.Word.Range range =
doc.Bookmarks.get_Item( ref name ).Range;

range.Text = text;
object newRange = range;
doc.Bookmarks.Add(bookmarkName, ref newRange);

 Step 7 : Call the common method ReplaceBookmarkText to replace bookmark StudentName with actual value i.e studentName

ReplaceBookmarkText(doc, “StudentName”, studentName);

4 thoughts on “Programming with word in C# : Replace bookmark with actual values

  1. Hi, thanks for this article.when i closed word docunment, Hovewer I had this error : System.Runtime.InteropServices.ComException (0x800706BA):RPC sunucusu kullanılamıyor. (HRESULT özel durum döndürdü: 0x800706BA)

  2. This is working fine. But on replacing the Bokkmarks the characters after the bookmarks are moving their positions. How to resolve this.?Also onusing this in asp its promting to crate a client side copy.

Leave a Reply