unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, Word2000, Excel2000,
  OleServer;type
  TForm1 = class(TForm)
    DBGrid: TDBGrid;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    Button1: TButton;
    ExcelApplication1: TExcelApplication;
    ExcelWorksheet1: TExcelWorksheet;
    ExcelWorkbook1: TExcelWorkbook;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
  i, row, column: integer;
  strT : string;
begin
  Try
    ExcelApplication1.Connect;
  Except
    MessageDlg('Excel may not be installed',
      mtError, [mbOk], 0);
    Abort;
  End;
  ExcelApplication1.Visible[0] := True;
  ExcelApplication1.Caption := 'Excel Application';
  ExcelApplication1.Workbooks.Add(Null, 0);
  ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
  ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
  DBGrid.DataSource.DataSet.Open;
  row := 2;
  for i:=1 to DBGrid.DataSource.DataSet.FieldCount do
  begin
        ExcelWorksheet1.Cells.Item[1,i]:=DBGrid.DataSource.DataSet.Fields[i-1].FieldName ;
  end;
  While Not (DBGrid.DataSource.DataSet.Eof) do
  begin
    column := 1;
    for i := 1 to DBGrid.DataSource.DataSet.FieldCount do
    begin
      if (DBGrid.DataSource.DataSet.fields[i - 1] is tdatetimefield) then
        ExcelWorksheet1.Cells.Item[row, column] := FormatDateTime('dd-mmm-yyyy',DBGrid.DataSource.DataSet.fields[i - 1].asdatetime)
      else
        ExcelWorksheet1.Cells.Item[row, column] := DBGrid.DataSource.DataSet.fields[i - 1].AsString;
      column := column + 1;
    end;
    DBGrid.DataSource.DataSet.Next;
    row := row + 1;
  end;
  ExcelWorksheet1.Disconnect;
  ExcelWorkbook1.Disconnect;
  ExcelApplication1.Disconnect;
  ExcelWorksheet1.free;
  ExcelWorkbook1.free;
  ExcelApplication1.free;
end;
end.
程序第一次 运行没问题
当关闭了excel,不关闭程序的情况下
再次运行button的单击事件
就报错了