试图了解和诊断我在 MS server 2008 上的 Excel 设置有什么问题。请参阅下面的 MWE。这在我的 Win 笔记本电脑上运行良好,但在服务器上不是很好。从干净登录开始,它第一次运行正常,但后续运行失败并显示错误文本:
Win32::OLE(0.1709) error 0x80010105: "The server threw an exception"
in PROPERTYPUT "DisplayAlerts" at mwe.pl line 20
第一次运行将 excel.exe 留在任务管理器中。我想第二次运行是试图重新连接到这个现有实例但失败了。请问我怎么能理解出了什么问题?
或者,如何在脚本完成后终止由 Win32::OLE 启动的 Excel 进程,以便重新运行启动一个新实例?
我的 MWE:
use strict;
use warnings;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';
$Win32::OLE::Warn = 3; # Die on Errors.
# use existing instance if Excel is already running
my $Excel;
eval {$Excel = Win32::OLE->GetActiveObject('Excel.Application')};
die "Excel not installed" if $@;
unless (defined $Excel) {
print "another\n!";
$Excel = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;})
or die "Oops, cannot start Excel";
}
$Excel->{DisplayAlerts}=0;
$Excel->Quit();
undef $Excel;