2009-09-29 6 views
2

다른 Excel 파일을 열 수 없습니다. 첫 번째 파일은 추가 기능의 모달 창에 의해 차단됩니다. 대화 상자 창을 닫으면 보류중인 모든 파일이 열립니다.VSTO : 다른 Excel 파일을 열 수 없습니다. 첫 번째 파일은 추가 기능의 모달 창에 의해 차단됩니다.

Excel 버전은 2007입니다. 프로그래밍 방식이 작동하므로 Microsoft Excel 2007에서 별도의 창에서 두 번째 파일을 열 수 있지만 첫 번째 창은 추가 기능이 모달에서 벗어날 때까지 기다리는 중입니다 대화 상자 창?

주의 :이 동작은 Excel의 고유 한 대화 상자 창에도 적용됩니다.

+0

sendKeys를 사용해 보셨나요? –

+1

해킹 된 솔루션을 사용하지 않아도됩니다. –

+0

추가 기능에 대한 모덜리스 대화 상자가 작동합니까? –

답변

3

아니요. Excel의 자동화 서버를 작성하는 방식의 아키텍처 제한 사항이 아닙니다. 자동화 큐에 서비스하는 스레드는 단 하나뿐입니다. Excel이 호출 스택의 맨 위에 있고 더 낮은 곳을 차단하는 경우 자동화 서버에 대한 새 호출은 다시 올 때까지 대기합니다.

+0

설명 주셔서 감사합니다! –

1

현재 응용 프로그램을 Excel 2007 및 VS 2010 (.NET 4.0 대상)으로 업그레이드하고 있으며 CustomTaskPane을 사용하는 경우 다른 스레드에서 실행중인 것으로 보입니다. 모달 폼을 시작하는 작업 창을 만들고이 폼에서 새 통합 문서를 추가하는 addin이 있습니다. 문제없이 작동하는 것 같습니다. addin에서 모달 형식을 직접 실행하면 설명 된 것과 동일한 문제가 발생합니다. 이것이 .NET 3.5 또는 2.0에서 작동하는지 확신 할 수는 없지만 한 번 할 가치가 있습니다. (CustomTaskPane에 대한 추가 정보 : http://msdn.microsoft.com/en-us/library/aa942864(VS.100).aspx)

+0

customtaskpane 클래스에서 시작될 때 모달 폼이 실제로 winforms 또는 wpf usercontrol의 기본 UI 스레드에서 실행되기 때문에 사용자가 설명하는 동작이 발생한다고 생각합니다. 여기서 문제는 그 작업이 분리 된 스레드에 있기 때문입니다. 사용자 알림이나 파일 변경과 같은 Excel 처리 기능을 사용하는 경우 모달 대화 상자가 처리 될 때까지 사용자가 실제로 계속할 수 있도록 허용하지 않을 수 있습니다. –

1

유일한 대안은 추가 기능 내에서 Excel.Application의 새 인스턴스를 만들고이 인스턴스를 사용하여 보류중인 파일을 여는 것입니다. 이상적이지는 않지만 다른 대답에 따르면 제품의 한계라고합니다. (Excel)

관련 문제