2013-03-28 1 views
0

MS 서버 2008에서 Excel 설치 프로그램의 문제점을 이해하고 진단하려고합니다. 아래 MWE를 참조하십시오. 이것은 내 승 노트북에서 잘 작동하지만 서버에서는별로 좋지 않습니다. 클린 로그인에서 처음에는 정상적으로 실행되지만 다음 작업은 오류 텍스트와 함께 실패합니다.Perl Win32 OLE Excel Server가 예외를 던진 이유를 이해하려고 시도했습니다.

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 [email protected]; 

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; 

답변

0

당신이 $ Excel을 사용해 볼 수 -> { 'DisplayAlerts'} = 따옴표와 0? 그 방법으로 사용하면 효과가 있습니다. 나는 모든 참조가 이런 방식으로 이루어 졌다고 생각한다.

관련 문제