if messagedlg('转换成功!保存吗?',mtconfirmation,[mbyes,mbno],0) = mryes then
  begin
    save_ok:=savedialog1.Execute ;    if save_ok then
      excel_sheet.saveas(savedialog1.FileName );  end;  excel_sheet.application.quit;

解决方案 »

  1.   

    或许你自己让Excel.Visible := true。然后在数据导出完成之后再显示,那么所有的保存操作就都可以在excel中完成了。
      

  2.   

    TO COBI:
     你回答了我不少问题,在此表示感谢。
     我用异常保护
    try
     WorkBook.SaveAs(FileName:=ExcelFileName);
    except 
     end;
    我想在EXCEPT中把当前WORKBOOK给释放掉,该怎么处理呢?以免得还留在内存中, 下次保存时还会提示问我是否要保存。  
      

  3.   

    作如下修改:
    Var //添加一个bool变量:
      flag:bool;flag:=true;//以下为需要修改的部分!!!!!!
      try
      WorkBook.SaveAs(FileName:=ExcelFileName); 
      except
      on E:EOleException do
      begin
        WorkBook.Close;
        Excel.Quit;
        flag:=false;
      end;
      end;//完整性处理
    if flag then
    begin
        Excel.Quit;
        flag:=false;
    end;
      

  4.   

      if savedialog1.Execute then
        xlssheet.saveas(savedialog1.FileName );
    并且把savedialog1的options中的ofoverwriteprompt设为true即可,那样即使选择“否”,也可以让你再选择
      

  5.   

    TO szgunz()兄:
      可是当执行WorkBook.Close; 时,又会提示是否保存WORKBOOK
        
      

  6.   

    这肯定啦,因为你的workbook是用 WorkBook := Excel.Workbooks.Add ;
    语句新建的,既然新建当然会提示保存了,不过你可以取消啊。
      

  7.   

    TO szgunz()兄:
      
    最好不要再提示这个框, 该怎么屏蔽呢?
      

  8.   

    加入这一句:
     if not VarIsEmpty(XlsApp) then
      begin
        XlsApp.DisplayAlerts := True;  // 7Discard unsaved files....
        try
          XlsApp.Application.Quit;
        except
        end;
      end;
      

  9.   

    //作如下修改:
      try
        WorkBook.SaveAs(FileName:=ExcelFileName); 
      except
        on E:EOleException do   Excel.DisplayAlerts := false;
      end;  WorkBook.Close;
      Excel.Quit;
    //还不满意的话,是不是有点过分苛刻了。