use warnings; use Win32::OLE; my $xl = Win32::OLE->new('Excel.Application', 'Quit'); $path ="C:\\Perl\\Copy of path1.xlsx"; my $wb = $xl->Workbooks->Open($path); my @excel_del_sheets = ("Sheet4", "Sheet5", "Sheet6"); for (my $shtNo = $wb->Sheets->{Count}; $shtNo > 0; $shtNo--) { my $shtName = $wb->Sheets($shtNo)->{Name}; if (grep(/^$shtName$/, @excel_del_sheets)) { $wb->Sheets($shtNo)->Delete; } } $wb->{DisplayAlerts}=0; $wb -> Close;