Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Another Excel-OLE Question

by mmittiga17 (Scribe)
on Jan 08, 2010 at 16:38 UTC ( #816348=perlquestion: print w/replies, xml ) Need Help??

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

Hi Monks, I have come across an excel spreadsheet that will not allow me to surpress Alerts. Normally this is not a problem. When I try to save out put and close book I get prompted to save changes. This never happens when using:

Excel->{DisplayAlerts} = 0; I still get: --------------------------- Microsoft Excel --------------------------- A file named 'C:/lab/msd\H38C85441.txt' already exists in this locatio +n. Do you want to replace it? --------------------------- Yes No Cancel --------------------------- #use strict; use Getopt::Std; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Excel'; use Cwd; $Win32::OLE::Warn = 3; # die on errors... my $Excel = Win32::OLE->GetActiveObject ('Excel.Application') || Win32::OLE->new ('Excel.Application', 'Quit'); $Excel->{'Visible'} = 0; #0 is hidden, 1 is visible $Excel->{DisplayAlerts} = "False"; #0 is hide alerts # application or open new opendir DIR , '.' or die "Could not open current dir: $!\n"; my @FilePattern = grep(/RTM001XLS/i, readdir DIR); closedir DIR; my $x=""; foreach $x (@FilePattern) { my $file = $x; my $out = (split(/\./,$file))[0]; print "in $file\n"; print "out $out\n"; my $dir = getcwd(); my $book = $dir . "\\" . $file; my $new = $dir . "\\" . $out .".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(); #rename($file, "Original\\" . $file); }
Anythoughts??? The only difference I know of between this and other XLS files I parse is this set of XLS files contain macros. Thanks in advance!!!

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

    It's $Excel->Application->{DisplayAlerts} = 0;.

    Martin

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

        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.

Re: Another Excel-OLE Question
by Ratazong (Monsignor) on Jan 08, 2010 at 16:43 UTC

    Try deleting the file (from your perl script) before writing to it from Excel... that way there is no need for Excel to bother you with a dialog.

    Rata (knowing that this is just a workaround ... but sometimes workarounds are as good as solutions ;-)

      I have tried deleting files before running script. I still get prompted "do you want to same file.txt" even if it does not exist. Thanks!!!

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (7)
As of 2023-02-01 15:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I prefer not to run the latest version of Perl because:







    Results (11 votes). Check out past polls.

    Notices?