In a previous episode, we discussed the Word application object and looked at some of its properties and methods. Now we'll take a look at the Document object, which (of course) represents a Word document.
Creating and Opening Documents
The application.Documents method returns a collection representing the currently open documents. To create a new document, call this collection's Add method:
word = WIN32OLE.new('Word.Application')
word.Visible = true
document = word.Documents.Add
You can optionally pass this method the name of a template to use for the new document:
document = word.Documents.Add('Normal')
document = word.Documents.Add('Normal.dot')
To open an existing Word document file, call this collection's Open method, passing it the file name:
word = WIN32OLE.new('Word.Application')
word.Visible = true
document = word.Documents.Open('c:\WordDocs\MyWordFile.doc')
Calling the Documents collection's Count method returns the number of documents in the collection, and you can iterate over this collection:
puts word.Documents.Count
for document in word.Documents
# ...code...
end
To reference the currently active document, call the application object's ActiveDocument method:
word = WIN32OLE.connect('Word.Application')
document = word.ActiveDocument
The document object contains numerous collections, including:
document.Paragraphs
document.Sentences
document.Words
Need to know the name and/or path of the document? There are three read-only methods you may find helpful:
document.FullName # returns the full path and filename
document.Name # returns just the filename, without the path
document.Path # returns the full path, without the filename
Printing, Saving, and Closing Your Document
To print a document, call its PrintOut method:
document.PrintOut
To save a document, call its Save or SaveAs methods:
document.SaveAs('c:\temp\MyDocument.doc')
document.Save
You can pass the SaveAs method an optional second argument to specify the file format. A few examples:
document.SaveAs('c:\temp\MyDocument.doc', 0) # Word document (default)
document.SaveAs('c:\temp\MyDocument.dot', 1) # Word template
document.SaveAs('c:\temp\MyDocument.txt', 2) # Text
document.SaveAs('c:\temp\MyDocument.rtf', 6) # Rich Text Format (RTF)
To close a document, call its Close method:
document.Close
That about wraps up our show for today. Coming up, we'll start working with document contents. As always, let me know if there is anything specific that you would like to see discussed here.
Thanks for stopping by!
2 comments:
I'm finding your blog on how to control Word and Excel applications with Ruby very useful. Can you tell me how to format text in Word using Ruby? I'm most interested in controlling justification, indenting paragraphs, changing fonts, using italics, bold, and underlining, etc. If you can post something on this I would be very greatful.
@alex:
I have posted a new article in response to your request, about formatting text.
Thanks for the suggestion!
David
Post a Comment