试图理解为什么Perl Win32 OLE Excel Server引发异常

时间:2013-03-28 16:21:19

标签: perl excel exception win32ole

尝试了解并诊断MS服务器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;

1 个答案:

答案 0 :(得分:0)

你可以试试$ Excel-> {'DisplayAlerts'} = 0和引号吗?我用那种方式,它的工作原理。我猜这些引用都是这样的。