I would add a sub_count for those that have more than 1 worksheet.
#!C:\Perl\bin/perl.exe
# -----------------------------------*
use strict;
use File::DosGlob 'glob';
use Win32::OLE qw(in with);
use Win32::OLE::Const;
use Win32::OLE::Const 'Microsoft Excel';
$Win32::OLE::Warn = 3; # Die on Errors.
# -----------------------------------*
# Main Program *
# -----------------------------------*
my $count = 0;
my @xfiles = (glob "e:\\run\\dlm\\*.xls");
my $Excel = Win32::OLE->GetActiveObject('Excel.Application')
|| Win32::OLE->new('Excel.Application', 'Quit');
$Excel->{DisplayAlerts} = 0;
foreach my $xname (@xfiles) {
#my $suf = $count++ . ".csv";
#(my $savename = $xname) =~ s/xls/$suf/;
$count++;
my $sub_count = 1;
my $Book = $Excel->Workbooks->Open($xname);
foreach my $Sheet (in $Book->Sheets) {
my $suf = $count .".". $sub_count++ .".csv";
(my $savename = $xname) =~ s/xls/$suf/;
$Sheet->SaveAs($savename, xlCSV);
}
$Book->Close;
}
$Excel->{DisplayAlerts} = 1;
#
print "Press any key to quit.";
until (<STDIN>) {}
|