2008-10-07 7 views
2

C# 프로그램과 OLE를 통해 Excel 2007 데이터 연결을 새로 고칩니다. 대부분의 작업은 단일 Workbooks.RefreshAll() 문으로 수행됩니다.OLE- 억제/잡기 대화 상자 오류를 통한 Excel 자동화?

스프레드 시트를 새로 고치는 것과 마찬가지로 여러 가지 문제가 발생할 수 있습니다. 새로 고침 프로세스 중에 프로그램에서 "데이터를 파일 '|' '에서 읽을 수 없다는 대화 상자 오류 메시지와"중첩 피벗 보고서 "에 대한 메시지를 제공 할 수 있습니다. 이 두 가지 모두 치명적이며, 나는 이러한 오류를 잡아낼 수 있어야하고 오류가있는 프로그램을 종료해야합니다.

불행히도 이러한 문제를 해결할 수없는 것 같아 대화 상자에 입력 할 때까지 자동화 된 프로그램이 표시됩니다.

사용자에게 표시되는 대신 Excel 대화 상자에 표시된 오류를 프로그래밍 방식으로 catch하는 것이 가능한지 아는 사람 있습니까?

답변

9

가장 좋은 방법은 Application.DisplayAlerts 속성을 False로 설정하는 것입니다. 이 기본 응답은 각 대화 상자에 대해 수행되도록 할 것

xlApp.DisplayAlerts = false; 

주 : 그건 당신이해야 할 것 모두가 다음입니다, 당신이 Excel.Application 개체 변수가 "xlApp"라는 가정이다 이것은 보통 당신이 원하는 것입니다. (DisplayAlerts = True로 설정하고 SendKeys를 사용하는 것은 다른 옵션 일 수 있지만 추악하고 오류가 발생하기 쉽습니다.)

이 호출은 OLE 자동화를 통해 수행하므로이 호출은 크로스입니다. -process, 따라서 DisplayAlerts 설정은 변경하기 전까지 유지됩니다. (VBA를 통해 진행중인 호출 인 경우 루틴이 완료되면 자동으로 다시 true로 전환됩니다. 동일한 동작은 CommandBar 또는 리본 컨트롤을 통해 호출되는 VB.NET 또는 C# 추가 기능에 적용될 수 있지만 필요합니다

+0

+ 1- 도움이되는 답변 –

+1

이 방법은 Excel 표준 대화 상자에서는 잘 작동하지만 VBA 끝/디버그 오류 상자에서는 작동하지 않습니다. –