2012-10-23 2 views
4

델파이로 작성된 엑셀 자동화 응용 프로그램을 사용하면 엑셀 통합 문서에 액세스하고 일부 내부 논리를 시트의 다른 데이터에 적용합니다.자동화 응용 프로그램이 종료 될 때 Excel 저장 대화 상자를 표시하지 않으려면 어떻게해야합니까?

은 엑셀 2003 년 동안 완벽하게 작동하고 내 응용 프로그램이 종료가, Excel에서 수정되지 않은 워크 시트를 저장하는 사용자를 묻는 대화 상자를 표시 할 때 2007 년

최근 일부 사용자가 해당 사용자에 엑셀 2010이있다. 이 메시지는 새로운 2010 형식으로 저장할 수식의 버전에 대해 설명합니다. 죄송합니다 정확한 단어가 없기 때문에 그것은 영어 사무실 패키지가 아닙니다.

내 앱이이 성가신 쓸모없는 상자를 보여주는 Excel 2010을 어떻게 방지 할 수 있습니까?

대부분의 사용자는 Excel 2007을 사용하므로 내 응용 프로그램을 실행하는 사용자의 실제 Excel 버전과 관계없이 내 응용 프로그램에서 처리해야하는 대부분의 파일은 해당 형식으로되어 있으므로 앞으로도 그대로 사용하게됩니다. 모든 파일을 마이그레이션하는 것은 옵션이 아닙니다.

+0

문제를 재현 할 수 있습니까? –

+0

당신은 당신의 언어로 오류를 줄 수 있습니까? – GolezTrol

+2

앱 어디에서나 통합 문서를 닫으시겠습니까? 그렇지 않은 경우 변경 사항을 저장하지 않고 통합 문서를 닫은 다음 응용 프로그램을 종료합니다. –

답변

11

이것은 자동화를 통해 Excel 시트를 인쇄하는 루틴입니다.

procedure PrintExcelReport(Const filename : String; 
            sheet : Integer); 
{- Sheet is counted from 1 and upwards !! } 
Var 
    App : OleVariant; 
begin 
    App:= CreateOleObject('Excel.Application'); 
    Try 
    App.Visible:= 0; 
    App.WorkBooks.Open(ExpandUNCFileName(filename),1); // Open read only 
    Try 
     App.ActiveWorkBook.WorkSheets[sheet].Select; 
     App.ActiveWorkBook.ActiveSheet.PrintOut; // Prints active sheet 
    Finally 
     App.ActiveWorkBook.Saved:= 1; 
     App.DisplayAlerts:= 0; 
     App.ActiveWorkBook.Close(SaveChanges:= 0); 
    End; 
    Finally 
    App.Quit; 
    App:= UnAssigned; 
    End; 
end; 

응용 프로그램에 맞게 그것을 적응 : 엑셀 대화 상자는 이제 다음 팝업 절약 몇 가지 문제가 후,이 루틴은 모든 문제를 해결했다.

+0

약간의 변경으로 구현되었고 제대로 작동합니다. 마법은 읽기 전용으로 열린 상태와 닫히기 전에 저장된 상태의 조합입니다. 감사. –

+0

왜 내가 완벽하게 구현하지 않았는 지 궁금해 할 때 ... 'App.Workbooks.Close (SaveChanges : = 0)'을 시도했을 때 논리가 ActiveWorkbook을 열지 못한다. OLE 런타임 오류가있어서 제거했다. . –