Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

win32::ole and word

by brownsofa (Initiate)
on Jun 06, 2004 at 21:04 UTC ( [id://361808]=perlquestion: print w/replies, xml ) Need Help??

brownsofa has asked for the wisdom of the Perl Monks concerning the following question:

Hello there,
I am a bit new to Perl and set out to write my first Perl code using the Win32::OLE. I RTFM and went through the forums here. Seeing as I want to get off on the right foot to save myself pain later I noticed that code that I found lying on the floor of the Internet worked but some other code I found here (http://perlmonks.thepen.com/198045.html) that resembled the MSDN way (within this MSDN link) did not. The method in question is the "typetext" way of inserting text.
Here is my code:
use strict; use Win32::OLE; use Win32::OLE::Const 'Microsoft word'; my $word = Win32::OLE->new('word.Application', ''); $word->{'Visible'} = 1; my $wordtarget = $word->Documents->add() || die("Unable to open document ", Win32::OLE->LastError()); my $range = $wordtarget->{Content}; $range->InsertAfter("InsertAfter method"); $wordtarget->TypeText("typetext method"); $range->TypeText("typetext method");

The resulting word document looks like this:
Insert After method

All other text is missing. The "typetext" way does not
work with my code (I did try to "selection() my document), but does with the code I found here and to be what microsoft is pushing.
I am using ActiveState Perl 5.6 and not the CSPAN.
Can anyone show and then push me down the right fork in
this road? Many thanks.

brownsofa

janitored by ybiC: Balanced <code> tags around codeblock, PM-ified links thusly - [http://foo.bar/bat/baz.html]

Replies are listed 'Best First'.
Re: win32::ole and word
by WhiteBird (Hermit) on Jun 07, 2004 at 04:14 UTC
    It's not clear to me what you are trying to accomplish. Are you just wanting to write text into a new word document, or are you trying to append text into an already existing document? I've used Win32::OLE before, but never these two methods.

    I find it interesting to play around with various arrangements of the code to see what results. I can get the typetext method to work if I code it like this:

    my $range = $wordtarget->{Content}; $range->InsertAfter("Insert After"); $range = $word->Selection(); $range->TypeText("typetext method");

    I notice that even though the "Insert After" is called first, the typetext text is printed first. Since I don't know what you are want to do exactly, I can't be much more help than that. Either keep playing around with what you've got, or post a little more detail. You're probably on the right track if you just keep reading the FAQs and documentation on Win32::OLE.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://361808]
Approved by Old_Gray_Bear
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2024-04-19 20:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found