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 が残ります。2 回目の実行では、この既存のインスタンスに再アタッチしようとしていますが、失敗しています。何がうまくいかないのかどうすれば理解できますか?
または、スクリプトが終了したときに 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;