Programming with word in C# : Replace bookmark with actual values
Step 1 : Add a bookmark to work document ( for example StudentLetter.doc )
- Click where you want to insert a bookmark.
- On the Insert tab, in the Links group, click Bookmark.
- Under Bookmark name, type a name. For example StudentName
- Click Add.
- Start Microsoft Visual Studio 2005 or Microsoft Visual Studio .NET.
- 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. - Add a reference to Microsoft Word Object Library. To do this, follow these steps:
- On the Project menu, click Add Reference.
- On the COM tab, locate Microsoft Word Object Library, and then click Select.
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
Step 4 : Initialize all the parameters
object fileName = @"C:\Template\StudentLetter.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 studentNameReplaceBookmarkText(doc, "StudentName", studentName);
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)
ReplyDeleteMake sure you have Microsoft Office installed in the system. Also request you to share the code and word template , you are using.Reach out to All Technical Faqs team : contactus@alltechnicalfaqs.com
ReplyDeleteThis is working fine. But on replacing the Bokkmarks the characters after the bookmarks are moving their positions. How to resolve this.?
ReplyDeleteAlso onusing this in asp its promting to crate a client side copy.
Request you to share your code to contactus@alltechnicalfaqs.com so that we can debug and help you
Delete