use Win32::OLE::Variant; use strict; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Excel'; $Win32::OLE::Warn = 3; my $Excel = Win32::OLE->GetActiveObject('Excel.Application')||Win32::OLE->new('Excel.Application', 'Quit'); my $Book = $Excel->Workbooks->Open( "F:\\project\\report1.xlsx" ); my $Book = $Excel->Workbooks->Open( "F:\\project\\report1.xlsm" ); # Open Workbook needing the macro: Macro1 my $Sheet = $Book->Worksheets(1); #work on sheet1 $Excel->Run("report1.xlsm!Deletebrows"); #Calling on the Macro from macro workbook. $Excel->Run("report1.xlsm!FillEmptyCellWithZero"); $Book->Save; $Book->Close;