views:

90

answers:

1

How can I run a macro in an Excel file I open with Perl?

+8  A: 

Here is a skeleton of what might work.

use strict;
use warnings;
use Win32::OLE;

my $excel= Win32::OLE->new('Excel.Application') 
    or die "Could not create Excel.Application!\n"
    ;
$excel->Workbooks->open( 'C:\Users\Me\Documents\Book1.xlsx' );
$excel->run( 'Book1!Macro1' );
$excel->quit;

One of the most sure ways that you can do this is to simply record a macro of opening a spreadsheet and running a macro. And then taking a look at the macro code that was generated and convert it into Perl. Keep in mind that the OLE object is the Application object.

9/22/2010 - I added quit to stop Excel from running.

Axeman
this solution is suitable. Thank you!
jushlwest
@jushlwest, then you should accept it by clicking on the checkmark near the score.
cjm
excel.exe not hang after the perl script. In taskmgr many duplicate excel.exe. How can I fix it?
jushlwest
`undef $excel;` at the end will stop excel.exe
Powertieke
Axeman