2012-04-17 14 views
0

perl에서 다음 예외가 발생합니다. 또한 나는 지금 펄 기술입니다. 예외는 다음과 같습니다Perl에서 문서를 닫을 때 OLE 예외가 발생합니다.

Win32::OLE<0.1709> error 0x800a1423 
     in METHOD/PROPERTYGET "Close" at getWordComments.pl line no 350 

여기에 예외가오고 getWordComments.pl의 샘플 코드입니다. 그리고 내가 코멘트를 읽고있다 문서

#Open the document in MS Word 
use Win32::OLE; 
{ 
    no warnings; 
    use Win32::OLE::Const 'Microsoft.Word'; # wd constants 
} 

$word=Win32::OLE->new('Word.Application'); 
$word->{Visible} = 1; 
$word->{DisplayAlerts} = 0; 

$Document=$word->Documents->Open({Filename => $filename, ReadOnly => 1}); 

B)를 여는 코드에 따라
A).
C) 문서 닫기 코드.

$Document->{Saved}=1; 
$Document->Close; 
undef $Document; 

#Close Word 
$word->Quit; 
undef $word; 

이 Office 버전의 문제입니까? 문서가 .docx이므로 .doc에 적합하게 작동합니다.

이 문제를 해결하는 데 도움을주십시오.


나는 문서에서 의견을 읽고 서버에 문서를 저장하고 있습니다. 확장자가 * .docx 및 * .doc 인 문서의 나머지 부분에 대해서는 정상적으로 작동합니다.

또한 perl에서이 작업을 수행 할 수있는 방법을 알려주십시오.

2003 Office 및 2007 Office 버전의 문서를 닫고 싶습니다.

버전 문제입니까?

감사와 관련 아빈 Porlekar

답변

1

잠깐! 너는 그것을 열고있어 ReadOnly 그리고 그것을 으로 표시했다. 저장 됨 ?? 저기서 내 정신병자에게 깃발을 던져.

  • 찾을 수있는 문서는 다른 형식으로 저장하는 것과 관련하여 문제가 있음을 나타내는 것 같습니다. 그것은 다른 경우에 해당한다고 생각할 수도 있습니다.

  • 또한이 오류는 COM 오류임을 확인했습니다. COM에 대해 알고있는 데 도움이됩니다. 아마도 doc와 docx는 이전의 doc 논리에 의해 정의 된 동일한 인터페이스의 완전히 다른 구현입니다. 그리고 이전 구현 (doc)이 ReadOnly를 열고 싶지만 저장 한 것으로 표시하고 싶다고 말할 수 있습니다. 새 구현에는 실제로이 작업을 수행해서는 안된다는 아이디어가 있습니다.

당신이 here 취급 인수 중 하나가 OriginalFormat이며,이 수를 볼 수있는 것처럼 당신은 당신이하려고하는 예외를 던지는 문서 형식에 그 인수를 기본값을 지정하지 않는 경우 명시적인 지시없이 다른 형식으로 저장하는 것. 인수 중 또 다른 인자는 SaveChanges입니다.

따라서 doc 형식으로 작동하지만 docx 형식의 다른 형식으로 저장하려고하면 불만을 토로하는 기본 doc 형식으로 변경 내용을 저장하도록 암시 할 수 있습니다.(당연히)

+0

나는 문서에서 주석을 읽고 서버에 문서를 저장하고있다. 확장자가 * .docx 및 * .doc 인 문서의 나머지 부분에 대해서는 정상적으로 작동합니다. – user1338040

관련 문제