Need help with win320le word interface

A

andyh47

I'm writing a report generator which uses word for formatting. In
expermeniting with win32ole this code works:

require 'win32ole'


w = WIN32OLE.new('Word.Application')
w.visible=TRUE
w.Documents.Add
doc=w.ActiveDocument
doc.Content.Font.Name = 'Arial'
doc.Content.Font.Size = 10
doc.Content.Font.Bold = TRUE
selection = w.selection
selection.typetext "Hello World"


However when I add this line to get the cursor positon:

curpos = selection.Information['wdHorizontalPositionRelativeToPage']


I get this error. does anyone know why? thanks for the help.

C:/PROGRA~1/Ruby/work/bell05/efo~7.rb:14:in `method_missing': Information
(WIN32OLERuntimeError)
OLE error code:0 in <Unknown>
<No Description>
HRESULT error code:0x8002000e
Invalid number of parameters. from
C:/PROGRA~1/Ruby/work/bell05/efo~7.rb:14

The offending command works when executed in VBWord.
 
C

Corey Lawson

Use the Object Inspector in VBA to see what is the numeric value of
wdHorizontalPositionRelativeToPage, and pass that in, instead of the
tag.

Win32OLE doesn't know about those constants or enumerations.

It's the same hoop to jump through with VBScript, too...
 
D

Dave Burt

andyh47 said:
require 'win32ole'

...

curpos = selection.Information['wdHorizontalPositionRelativeToPage']

The above is not a correct translation of the VB code you are using:
curpos = Selection.Information(wdHorizontalPositionRelativeToPage)

wdHorizontalPositionRelativeToPage is a constant integer whose value is 5.
(Try printing it or displaying it in a msgbox from Word/VBA.

Furthermore, Information has a required argument, and you need to pass that
as a Ruby argument rather than using the [] operator as you're doing here.

Try this:
WdHorizontalPositionRelativeToPage = 5
curpos = selection.Information(WdHorizontalPositionRelativeToPage)
or this:
module Word; end # you can use whatever name you like instead of Word
WIN32OLE.const_load(w, Word)
curpos = selection.Information(WdHorizontalPositionRelativeToPage)

Cheers,
Dave
 
A

andyh47

Thanks very much for your post and the one from Corey. The advice worked
like a charm. Thanks very much for your help.


Dave Burt said:
andyh47 said:
require 'win32ole'

...

curpos = selection.Information['wdHorizontalPositionRelativeToPage']

The above is not a correct translation of the VB code you are using:
curpos = Selection.Information(wdHorizontalPositionRelativeToPage)

wdHorizontalPositionRelativeToPage is a constant integer whose value is 5.
(Try printing it or displaying it in a msgbox from Word/VBA.

Furthermore, Information has a required argument, and you need to pass
that as a Ruby argument rather than using the [] operator as you're doing
here.

Try this:
WdHorizontalPositionRelativeToPage = 5
curpos = selection.Information(WdHorizontalPositionRelativeToPage)
or this:
module Word; end # you can use whatever name you like instead of Word
WIN32OLE.const_load(w, Word)
curpos = selection.Information(WdHorizontalPositionRelativeToPage)

Cheers,
Dave
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,780
Messages
2,569,608
Members
45,250
Latest member
Charlesreero

Latest Threads

Top