#! /usr/bin/perl use warnings; use strict; use Win32; use Win32::OLE; # the following two may or may not be needed, depending on # your excel file and your code use Win32::OLE::Const 'Microsoft Excel'; use Win32::OLE::Variant; my $excelFile = shift( @ARGV ); # or whatever defined $excelFile or die "Usage: $0 excelFile\n"; -f $excelFile or die "Error: file '$excelFile' doesn't exist"; # convert to windows-full-path my $fullFilename = Win32::GetFullPath( $excelFile ); # try to re-use running instance of Excel my $excel; eval { $excel = Win32::OLE->GetActiveObject( 'Excel.Application' ) }; if( $@ ) { die "Error: no Excel installed: $@\n"; } # if unless( defined $excel ) { # if not running, start it $excel = Win32::OLE->new( 'Excel.Application', sub { $_[0]->Quit } ) or die "Error: can't start Excel\n"; } # unless # to see what happens; useful for debugging $excel->{Visible} = 1; my $workbook = $excel->Workbooks->Open( $fullFilename ) or die "Error: can't open Workbook '$fullFilename'\n"; ...