운영체제 : 윈도엑스피
델파이버전 : 델파이7
디비 : 파라독스
질의 : 델파이에서 쿼리로 불러온 데이타를 디비그리드에 보여주고
디비그리드 자료를 엑셀로 다시 불러 오려고 하는데 첨부된 그림파일과같은
예러가 자꾸 발생하네여
2009년 상반기에는 이상없이 잘 돌아 갓느데
하반인가 어느때부터 엑셀로 자료 오픈시 자꾸 에러납니다
이유가 뭘까여 빠른 해결 방법을 알고싶네여
다들 즐건하루 되시고 행복하시길 ^^*
var
XL : Variant;
k, i : integer;
sData: string;
begin
Try
XL := CreateOLEObject('Excel.Application');
Except On E: Exception Do
begin
ShowMessage('Excel OLE object를 오픈할 수 없습니다.'+E.Message);
Exit;
end;
End;
Try
XL.WorkBooks.Add; //새로운 페이지 생성
XL.Visible := False;
XL.Workbooks[XL.Workbooks.Count].WorkSheets[1].Name := 'Sheet1';
sData := '';
For i := 0 To DBGrid2.Columns.Count - 1 Do
Begin
sData := sData+DBGrid2.Columns[i].Title.Caption+#9;
If DBGrid2.Columns[i].Field.DataType In [ftString,ftfloat,ftMemo,ftWideString] Then
Begin
XL.Workbooks[XL.Workbooks.Count].WorkSheets['Sheet1'].Columns[i+1].Select;
XL.Selection.NumberFormatLocal := '@';
End;
End;
sData := sData+#$D#$A;
With DBGrid2 Do
Begin
k := 0;
DataSource.DataSet.First;
While Not DataSource.DataSet.Eof Do
begin
inc(k);
For i := 0 To Columns.Count - 1 Do
sData := sData+Columns[i].Field.AsString+#9;
sData := sData+#$D#$A;
DataSource.DataSet.Next;
End;
End;
Clipboard.SetTextBuf(PChar(sData));
XL.Cells[1,1].Pastespecial;
XL.Range['A1', Chr(64+DBGrid2.Columns.Count)+IntToStr(k)].select;
XL.Selection.Columns.AutoFit;
XL.Range['A1', 'A1'].select;
XL.Visible := True;
Except On E: Exception Do
Begin
ShowMessage('Excel로 자료를 보내는 중 오류가 발생했습니다.'+E.Message);
XL.Visible := True;
Exit;
End;
End;