Consider this code:
my $filename= shift @ARGV; print "processing [$filename]\n"; my $Doc= Win32::OLE->GetObject ($filename, sub {$_[0]->Close()} ); print "** $Doc $Doc->{FullName}\n"; $Doc->SaveAs ('F:\\dev\\experiment\\ScanWord\\foobar.doc');
I've got several problems here, which I think are all related. When I run this, giving it a fully-qualified file name of a Word document, it apparently does load the object and hooks it up to the proper COM server, because the FullName property works and SaveAs works.

But then when it quits, it can't Close the document (error says "This method or property is not available because a document window is not active". Close method is documented as taking either a Window or a Document or Pane, so why doens't it close this document?).

Meanwhile, after Perl terminates, WINWORD.EXE is still running, and still has the file foobar.doc open. That problem (I would have thought that this whole reference counting thing would have taken care of it!) is why I put the Close in the destructor-spec in the first place.

Any clues, please? Pointers to better Win32::OLE information than came with the .pm?

—John


In reply to Win32::OLE problem with Destructing by John M. Dlugosz

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.