sub calc_all_14 { my $lib_root = catfile( $ENV{ProgramFiles}, 'Microsoft Office', qw(OFFICE12 Library Analysis) ); #print "1---$lib_root\n"; my $xll_path = catfile $lib_root, 'ANALYS32.XLL'; #print "2---$xll_path\n"; my $xla_path = catfile $lib_root, 'ATPVBAEN.XLAM'; #print "3---$xla_path\n"; my $excel = get_excel(); #$excel->{Visible} = 1; #sleep(5); my $book = $excel->Workbooks->Open($JSGCB_13); $book->RunAutoMacros(1); my $sheet = $book->Worksheets(1); # count the data line num my $flag_counter = -1; my $row = 5; # for calc the line num while ($flag_counter ne '0') { $flag_counter = 0; # check column 1 for the existing line if (defined $sheet->Cells($row,1)->{'Value'}) { $flag_counter ++; } else { last; } $row ++; } my $row_num = $row - 1; my $str_1_1 = '$AQ$5:$AQ$'.$row_num; my $str_1_2 = '$AU$5:$AV$'.$row_num; my $str_2_1 = '$AQ$5:$AQ$'.$row_num; my $str_2_2 = '$AS$5:$AT$'.$row_num; my $str_3_1 = '$AQ$5:$AQ$'.$row_num; my $str_3_2 = '$AR$5:$AS$'.$row_num; $excel->AddIns->Add( "$xll_path" ); $excel->RegisterXLL( 'Analys32.xll' ); my $atp_book = $excel->Workbooks->Open( $xla_path ); $atp_book->RunAutoMacros(1); $sheet = $book->Worksheets(1); #sleep(5); # Application.Run "ATPVBAEN.XLA!Regress", ActiveSheet.Range(Cells(2, 2), Cells(i, 2)), ActiveSheet.Range(Cells(2, 3), Cells(i, j)), False, False, , ActiveSheet.Range("$H$26"), False, False, False, False, , False # for C-L $excel->Run(qq{ATPVBAEN.XLAM!Regress}, $sheet->Range($str_1_1), $sheet->Range($str_1_2), 0,0,95,'C-L',1,1,1,1,1,1); # for H-M $excel->Run(qq{ATPVBAEN.XLAM!Regress}, $sheet->Range($str_2_1), $sheet->Range($str_2_2), 0,0,95,'H-M',1,1,1,1,1,1); # for T-M $excel->Run(qq{ATPVBAEN.XLAM!Regress}, $sheet->Range($str_3_1), $sheet->Range($str_3_2), 0,0,95,'T-M',1,1,1,1,1,1); $excel->{DisplayAlerts} = 0; if (-e $JSGCB_14) { unlink $JSGCB_14; } #sleep(5); # save and exit $book->SaveAs($JSGCB_14); $book->close; undef $book; undef $excel; #system ('cmd'); #exec 'cmd'; }