http://qs1969.pair.com?node_id=816366


in reply to Re: Another Excel-OLE Question
in thread Another Excel-OLE Question

Strange, keeps asking me if I want to save changes. alerts=0 should work.

Replies are listed 'Best First'.
Re^3: Another Excel-OLE Question
by marto (Cardinal) on Jan 08, 2010 at 18:17 UTC

    I don't have Microsoft office at home, and only use Microsoft Windows at home for Steam. At work I threw together a quick example based on yours, something like:

    #!/usr/bin/perl use strict; use warnings; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Excel'; $Win32::OLE::Warn = 3; # die on errors... my $Excel = Win32::OLE->GetActiveObject ('Excel.Application') || Win32::OLE->new ('Excel.Application', 'Quit'); $Excel->{'Visible'} = 1; #0 is hidden, 1 is visible $Excel->Application->{DisplayAlerts} = 0; #0 is hide alerts my $book = "c:\\input.xls"; my $new = "c:\\output.txt"; my $Book = $Excel->Workbooks->Open({FileName =>$book, ReadOnly => 1}); # open Excel file my $Sheet = $Book->Worksheets(3); $Sheet->Activate(); $Book->SaveAs({Filename => $new, FileFormat => xlText}); $Book->Close; $Excel->Quit();

    Prior to running the script I populated c:\output.txt with "This is a test", and sheet three of the Excel workbook with "boohya!". After running the script the contents of c:\output.txt read "boohya!". For testing purposes I'm pretty sure I left Excel visible.

      Thanks for the effort, however, it still will not save the output.txt without prompting to save output.txt. Could this have something to do with the fact that the excel docs I am trying to run this on contain macros???
        try
        $Book->Close({SaveChanges => 0});
        poj