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

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

Howdy! I want to print out an Excel spreadsheet using Win32::OLE. I want to set the printout to print (a) the entire workbook and (b) select a non-default printer. I need to know the names of the hash elements to the ActiveSheet.PrintOut() function to tell it to select a specific printer, and to 'print entire workbook'. Any Clues are VERY welcome!

So far, I have the following code:

use Win32::OLE qw(in); use Win32::OLE::Const; my $Class = "Excel.Application"; my $File = "c:\\web\\apache\\cgi-bin\\testfile1.xls"; my $Excel = Win32::OLE->GetActiveObject( $Class ); if (!($Excel)) { $Excel = new Win32::OLE($Class, \&QuitApp ) || die "Could not cretate an OLE '$Class' object"; } $Excel->{Visible} = 1; my $Book = $Excel->Workbooks->Open( $File ); # open the file my $count = $Book->Worksheets()->{Count}; print("There's $count worksheets in $File.\n\n"); $Book->ActiveSheet->Activate(); my @thing = $Excel->ActiveSheet->PrintOut( { PrintToFile => 1, PrToFileName => "c:\\temp\\ps_output\\test1.file", Copies => 1 }); $Book->{Parent}->Quit();
PLEASE if you know where to find the clues to solve this Microsoft-induced trauma, please post them?

cordially, -- Kevin Rice

Originally posted as a Categorized Question.