Q&A

  • [질문]디비그리드 자료 엑셀로 받는 코딩 에러


운영체제 : 윈도엑스피
델파이버전 : 델파이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;

0  COMMENTS