my $Book = $Excel->Workbooks->Open("$input_file") || die "could not open excel file";
my $sheetcnt = $Book->Worksheets->Count();
$sheetcnt++;
my $New_Sheet = $Book->Worksheets->Add({After=>$Book->Worksheets($Book->Worksheets->{Count})});
print "Sheetcount = $sheetcnt\n";
####30##############################################################################
my $count = 0; ########Counting the sheet number, if first sheet, then take the whole data, else exclude first row
foreach my $Sheet(in $Book->{Worksheets})
{
my $select_sheet = $Sheet;
if($select_sheet->Range("A1")->{Value} =~ /Step/i)
{
my ($last_row,$last_column) = sub_find_last($Sheet);
print "$select_sheet->{Name} $last_row,$last_column\n";
last if ($count == $Book->Worksheets->{Count});
if($count==0)
{ my $copy_range = $select_sheet->Range("A1:$last_col");
$select_sheet->copy($copy_range);
my $paste_range = $New_Sheet->Range('A1');
$paste_range->paste();
$count++;
}
else
{
my ($last2_row,$last2_col) = sub_find_last($New_Sheet);
print "$last2_row and $last2_col are here\n";
my $range_needed = $last2_row + 1;
my $copy_range = $select_sheet->Range("B1:$last_col");
$select_sheet->copy($copy_range);
my $paste_range = $New_Sheet->Range("$range_needed");
$pasted = $paste_range->paste();
# $Book2->Save();
$count++;
}
}
}
##########Subroutines###########
####sub find_last########
####Used to find the last row/column in the sheet
sub sub_find_last
{
my $sheet_sel = shift;
# print "$sheet_sel is the sheet selected\n";
my ($last_rows,$last_col);
$last_rows = $sheet_sel->UsedRange->Find({What=>"*",
SearchDirection=>xlPrevious,
SearchOrder=>xlByRows})->{Row};
$last_col = $sheet_sel->UsedRange->Find({What=>"*",
SearchDirection=>xlPrevious,
SearchOrder=>xlByColumns})->{Column};
return ($last_rows,$last_col);
}
####
Sheetcount = 49
Sheet18 3,6
Sheet20 2,6
Can't use an undefined value as a HASH reference at script.pl
####
foreach my $Sheet (in $Book->{Worksheets})
{
my $select_sheet = $Sheet;
if($select_sheet->Range("A1")->{Value} =~ /Step/i)
{
print "CounT IS $count \n";
my ($last_row,$last_column) = sub_find_last($select_sheet);
print "$select_sheet->{Name} $last_row,$last_column\n";
if ($cnt == $num)
{
last;
}
elsif($count == 0)
{
print "I am here";
my $rango = "C"."$last_row";
print "$rango is the rango";
$select_sheet->range("A1:$rango")->copy();
$New_Sheet = $Book->Worksheets($sheetcnt);
$New_Sheet->range("A1")->Select;
$New_Sheet->paste();
$Book->Save();
$count++;
}
else
{
my ($last2_row,$last2_col) = sub_find_last($New_Sheet);
my $range_needed = $last2_row + 1;
my $rango2 = "C"."$last_row";
my $rango3 = "A"."$range_needed";
$select_sheet->range("A2:$rango2")->copy();
$New_Sheet->range("$rango3")->Select;
$New_Sheet->paste();
$Book->Save();
$count++;
}
$num++;
}
else
{
$num++;
}
}