We are manipulating our Word 2007 documents from .Net using Word Interop. Mostly doing stuff with fields as in:
For Each f In d.Fields
f.Select()
//do stuff with fields here
Next
This leaves the last field in the document selected.
So, for the sake of neatness we would like to position the cursor at the end of the document (or even the start would be OK).
Googling for the answer doesn't throw up much ... the nearest I can get seems to be suggesting we need to involve ourselves with ranges or bookmarks. There's a GoTo
method for the Document
object but none of the WdGoToItem
options it offers are useful.
Isn't there a simple way to just send the cursor to the end (or start) of document?
Edit
Part of my problem was I didn't like leaving the last field selected. Have now realised that I can do
f.Unlink
to remove the mergefield
and just leave the field text there as plain text. Which is neater, whether or not we also reposition the cursor
I'm not sure I'm using the same environment as you, but to go to the start or end of the document here's what works for me:
This is how it looks in C#:
I guess it will be even easier in VB.Net as it supports optional parameters.
@Alexander Kojevnikov: Thanks for your help because you put me on the right track. However I found I had to apply the .GoTo to the Word Selection object, not the Document. As in:
I use unit Word_TLB in Delphi with Appliction object- Word.Application
as following:
generally end of word document is:
When I use
new content was insert before last line.
To change cursor position at the end of the current document in a C# Word Add-In VSTO :
See How to: Programmatically Define and Select Ranges in Documents
The easiest way to figure out an outline for the actual code is to record a macro in Word for that specific action. Then you can modify the generated code to suit different syntax(s) of VB, VB.NET, C# etc.
The code snippet below demonstrates the usage for a VB.NET application:
Hope this helps.