in reply to Win32:OLE - close documents
I doubt that the code you posted is the code that you use. Maybe, if this is the actual code, you are confused about what my does, or go about your way in a very roundabout manner.
Anyway, the main cause of your "problem" is that Word keeps temporary files open as long as your file is opened in Word. You need to actually close the document (or the Word application) so it cleans up its tempfiles. Your naming convention is quite confusing ($doc is a Word.Application object and not a document), so I'll rewrite your code to be closer to what Perl sees:
my $word = Win32::OLE->new('Word.Application', 'Quit'); $word->Documents->Open($path); my $new_name = $path; # Get a handle on the document we just opened, # so we don't need to use ActiveDocument: my $doc = $word->Documents($path); # Set new extension $new_name =~ s!\.fin$!.rtf!i; $doc->SaveAs({ FileName => $new_name, FileFormat => wdFormatRTF }); # Either one of these should work: # Close the document $doc->Close(); undef $doc; # Close Winword $word->Quit(); undef $word;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Win32:OLE - close documents
by Anonymous Monk on Jan 03, 2005 at 14:41 UTC | |
by Corion (Patriarch) on Jan 03, 2005 at 14:46 UTC | |
by jplindstrom (Monsignor) on Jan 03, 2005 at 17:57 UTC |