dbgrid의 내용을 엑셀의 saveas로저장했습니다.
procedure
var
workbook : Variant;
begin
....
....
workbook := XL.WorkBooks.Add; //새로운 페이지 생성
.....
.....
workbook.saveas(abc.xls); //파일저장
그런데 기존에 파일이 있는 경우 재저장할것인지를 물어오면
'예(yes)'를 클릭하면 문제가 없이 파일을 엎어씌우는데(저장잘됨)
'아니오(no)'를 클릭하면 다음과 같은 에러가 뜹니다.
_______________
Project aa.exe raised exception class EOleException with message 'Workbook클래스 중 SaveAs메서드에 오류가 있습니다'.Process stopped. Use Step or Run to continue.
________________
라고 뜹니다.
예외상황 처리라든가 어떤 방법이 있는지를 알고 싶습니다.
빨랑 좋은 답변을 바랍니다...부탁해요
> dbgrid의 내용을 엑셀의 saveas로저장했습니다.
> procedure
> var
> workbook : Variant;
> begin
> ....
> ....
> workbook := XL.WorkBooks.Add; //새로운 페이지 생성
> .....
> .....
> workbook.saveas(abc.xls); //파일저장
>
> 그런데 기존에 파일이 있는 경우 재저장할것인지를 물어오면
> '예(yes)'를 클릭하면 문제가 없이 파일을 엎어씌우는데(저장잘됨)
> '아니오(no)'를 클릭하면 다음과 같은 에러가 뜹니다.
> _______________
>
> Project aa.exe raised exception class EOleException with message 'Workbook클래스 중 SaveAs메서드에 오류가 있습니다'.Process stopped. Use Step or Run to continue.
> ________________
> 라고 뜹니다.
> 예외상황 처리라든가 어떤 방법이 있는지를 알고 싶습니다.
> 빨랑 좋은 답변을 바랍니다...부탁해요
>
예외 처리는 아니구요 이런 식으로 하면 어떨까요??
procedure
var
workbook : Variant;
begin
....
....
workbook := XL.WorkBooks.Add; //새로운 페이지 생성
.....
.....
XL.DisplayAlerts := False; {Excel 종료시 저장 여부를 물어보지 않도록 한다}
SaveDialog1.Options := SaveDialog1.Options + [ofOverWritePrompt]; //덮어쓸것인지 물어보게
if SaveDialog1.Execute then begin
workbook.saveas(SaveDialog1.FileName); //파일저장
end;
직접 해보지 않고 해서 에러가 날지도 모르겠네요 ..
참고 하세요 ^^