2016-11-25 1 views
-1

나는 스크린 샷을 가져 와서 Microsoft Word 서식 파일 (.dot) 파일의 사전 정의 된 책갈피에 붙여 넣는 프로그램을 C#로 작성하고 있습니다.Microsoft Word Interop : COMException

코드는 마이크로 소프트 워드 2007에서 잘 작동하지만, 마이크로 소프트 워드에 무작위로 실패 2016

내가 다음 코드 라인으로이 일을 해요 :

// wdoc is a word document object 
// bookMarkName is pre-defined in the code 
wdoc.Bookmarks.get_Item(ref bookMarkName).Range.Paste(); 

코드는 워드 2007에서 완벽하게 작동 나는 그것이 워드 2016에서 실행하면, 그것은 몇 시간 동안 작동 한 후 다음과 같은 오류 표시, 위의 줄에서 실패는 워드 2016

System.Runtime.InteropServices.COMException (0x800A1066): Command failed at 
Microsoft.Office.Interop.Word.Range.Paste() 

어떻게 작동하려면를?

+0

micrsofot.office.interop과 같은 많은 문제가 있습니다. 때로는 그다지 안정적이지 못합니다. 모든 단어 프로세스를 죽이고 코드를 실행하면 최고의 경험을 얻을 수 있습니다. 당신의 문제에 도움이 될지 모르겠다. – user1519979

+0

고마워. 벌써 했어. – NavkarJ

+0

이것은 간헐적 인 문제처럼 보입니다. 이러한 유형 (필자의 경우)은 모든 환경 설정과 모든 소스 코드를 가지고 있어도 해결하기가 가장 까다 롭습니다. 정보가없는 옆에 도움을 요청하고 있습니다. 그게 당신이 downvoted 이유는 것 같아요. – parvee

답변

0

웹에서 시간을 검색 한 후 위의 문제에 대한 해결책과 매우 간단한 해결책을 발견했습니다.

명백한 문제는 Word 2016이 개발에 사용 된 Word 2007의 Interop 라이브러리를 완전히 지원하지 못했다는 것입니다.

Interop을 사용하여 Microsoft Office 응용 프로그램과 상호 작용하는 프로그램을 만드는 경우 서로 다른 버전의 Interop 라이브러리가있는 프로그램을 빌드하십시오. 프로그램이 대상 시스템에 설치된 Interop 라이브러리를 자동으로 사용하면 시스템에 설치된 Microsoft Office 버전과 독립적이 될 수 있기 때문에 더 좋을 것입니다. 그러나 필자가 검색 한 내용은 현재 가능하지 않습니다. .

다른 버전의 Microsoft Office 용 Interop 라이브러리를 다운로드하는 방법에 대해 궁금한 점이 있다면 제 권고는 그렇게하지 말고 대신 MS Office의 각 버전에 맞게 프로그램을 빌드하십시오 해당 MS Office 버전이 설치된 시스템에서) 다른 버전의 Office 용 프로그램을 별도로 배포 할 수 있습니다. 이 방법을 사용하면 사용자는 자신의 시스템에 설치된 MS Office 버전에 따라 적절한 버전의 프로그램을 다운로드 할 수 있습니다.