Если вам нужно умереть от ошибок в Excel, вам нужно установить соответствующий флаг на 3 (работает с Office 2000):
$Win32::OLE::Warn = 3; # Die on errors in Excel
Более фундаментальная проблема может иметь отношение к вашей версии Office, хотя. Базовая архитектура OLE была пересмотрена после (я полагаю) Office 2007. Я столкнулся с этой проблемой некоторое время назад, когда сценарий, который я разработал в тандеме с Office 2007, отказался работать с Office 2000.
Лучший способ работы, который я могу предложить, - это работать с OLE-браузером Excel (довольно запутанным), нажимая клавишу F2 в режиме VBA.
«Hello, World» Perl + OLE + Excel (работает с Excel 2000):
use strict;
use warnings;
use Win32::OLE qw/in with/;
use Win32::OLE::Const 'Microsoft Excel';
$Win32::OLE::Warn = 3; # Die on errors in Excel
my $excel = Win32::OLE->GetActiveObject('Excel.Application')
|| Win32::OLE->new('Excel.Application', 'Quit');
my $workbook = $excel->Workbooks->Add || warn "Couldn't add a workbook";
my $sheet = $excel->Worksheets->Add || warn "Couldn't add a worksheet";
$sheet->{Name} = "Hello World";