In a previous installment, we looked at the Word Document object. Now we're going to work with the contents of the Document object, via the Range object.
First, let's create an instance of the Word Application object and add a new Document object:
require 'win32ole'
word = WIN32OLE.new('Word.Application')
word.Visible = true
document = word.Documents.Add
The Range Object
As the name implies, a Range object represents a range within the Document, with a defined starting point and end point. You can define a Range by calling the Document object's Range method and passing it two arguments. The starting point is the character index before the start of the Range, and the end point is the character index at the end of the Range. So, to get a Range containing the first five characters of a document...
first5characters = document.Range(0, 5)
To get a Range containing characters 6 through 15...
next10characters = document.Range(5, 15)
Keep in mind that the Range method returns a Range object. To get the text for the Range object, call its Text method:
txt = document.Range(0, 5).Text
The Word document object's Characters, Words, and Sentences methods are shortcuts that return Range objects.
A range may represent the entire document...
document.Range
...a single word or sentence...
word5 = document.Words(5)
fifth_sentence = document.Sentences(5)
...or a single character...
first_character = document.Characters(1)
first_character = document.Characters.first
first_character = document.Range(0, 1)
To get (or set) the text of a Range, call its Text method...
fifth_sentence_text = document.Sentences(5).text
document.Sentences(5).text = "New text for sentence five."
all_text = document.Range.Text
To insert text into a Document, define a single-point Range and call its Text method. For example, to insert text at the start of the document...
document.Range(0, 0).Text = "New text at start of document. "
To be continued...
No comments:
Post a Comment