http://www.perlmonks.org?node_id=495237


in reply to Win32::OLE and Word

Use $Word = Win32::OLE->new ("Word.Application"); rather than $Word = Win32::OLE->GetActiveObject("Word.Application");. I'd guess you had Word running on your test system, but not on the others.

Update: It's not obvious to me why you my $Word = Win32::OLE::Const->Load("Microsoft Word"); as you don't use the constants. In fact you immediately clobber the variable in the next line!


Perl is Huffman encoded by design.

Replies are listed 'Best First'.
Re^2: Win32::OLE and Word
by Util (Priest) on Sep 27, 2005 at 01:58 UTC

    Best of both worlds:
    Adapted from Win32::ole and MSWord:

    # If Word is already running, then use the existing instance, # and leave it running when we are done. # Otherwise, start a new instance of Word, and close it when # we are done. use strict; use warnings; use Win32::OLE; my $Word; eval {$Word = Win32::OLE->GetActiveObject('Word.Application')}; die "Word not installed: $@" if $@; unless (defined $Word) { $Word = Win32::OLE->new('Word.Application', sub {$_[0]->Quit}) or die "Oops, cannot start Word"; } $Word->{'Visible'} = 1; # If you want to see what's going on