Not sure why you're showing two different code samples. Is it that the latter one works?
In the first code sample:
Try making sure you are indeed opening the file. "Can't call method Worksheets on an undefine value" suggests you haven't opened it. Uncomment the "die on errors" line. And/or check the return code:
my $Book = $Excel->Workbooks->Open("Reten_template.xls") || die "can't
+ open file";
Then try displaying all the sheets to make sure you have the right name:
for (1..$Book->Worksheets->Count) {
print "$_: <", $Book->Worksheets($_)->Name, ">\n";
}
By the way, here's a good way to make sure you have the full path of the file name:
# open Excel file
use File::Spec;
my $file = File::Spec->rel2abs("Reten_template.xls");
my $Book = $Excel->Workbooks->Open($file) or die "can't open $file: $!
+\n";
If you manage to open the Excel file, and you have the right name, then this should work:
my $Sheet = $Book->Worksheets('JUN05');