我用
uses comobj;
var
  ExcelApp: Variant;
begin 
  ExcelApp := CreateOleObject( 'Excel.Application' );
  ...
  ...
  ExcelApp.activeworkbook.Saveas(fs); //这一句
  ExcelApp.WorkBooks.Close;
  ExcelApp.Quit;
end;当我保存的文件名已存在时,系统会给我一个提示:此文件已存在,是否覆盖“是”“否”“取消”;
我选择“是”的时候,程序执行下去;选择了“否”“取消”,程序就报错,提示“saveas”动作未完成。怎么才能选择“否”“取消”也能让程序执行下去或返回
达人们帮忙一下,明天结帖

解决方案 »

  1.   

    ExcelApp.ActiveWorkBook.Saved := True;
      

  2.   

    呵呵,我也碰到过
    楼上的,请问 在用try来捕捉异常的时候应该 怎么编写呢?
    谢谢
    ~~~~
      

  3.   

    昨天打印了一下SAVEAS的返回值,
    Memo1.Lines.Add(ExcelApp.activeworkbook.Saveas(fs));
    点“是”的时候返回-1;点“否”“取消”的时候,程序报错,继续执行后无返回值,
    SAVEAS事件应该没执行完,这样这么判断异常?郁闷ING
      

  4.   

    uses comobj;
    var
      ExcelApp: Variant;
    begin 
      ExcelApp := CreateOleObject( 'Excel.Application' );
     ExcelApp.ActiveWorkBook.Saved := True;  ...
      ...
      ExcelApp.activeworkbook.Saveas(fs); 
      ExcelApp.WorkBooks.Close;
      ExcelApp.Quit;
    end;
    试一下
      

  5.   

    to WWWWA(aaaa) : 不行,和以前的错误一样
      

  6.   

    把ActiveWorkBook也定义成变体类型再试!
      

  7.   

    if FileExists('d:\temp\temp.xls') then //删除动态生成的临时temp.xls文件
          DeleteFile('d:\temp\temp.xls');
      

  8.   

    试试:
    try
      ExcelApp.activeworkbook.Saveas(fs); //这一句
    except
    end;
    ExcelApp.WorkBooks.Close;
    ExcelApp.Quit;
      

  9.   

    to : xxmmmx(踢踏)  这个实验过的。在捕获异常之前
    在SAVEAS哪里就报了一个错
    try
      ExcelApp.activeworkbook.Saveas(fs); //这一句
    except
    end;
      

  10.   

    只有象 WWWWA(aaaa)那样判断了,在SAVEAS执行之前判断   if  FileExists(fs) then
             begin
                if Application.MessageBox('同名文件已存在,'+#13+'是否覆盖保存?'
                   ,MB_ICONQUESTION+MB_YESNO)=IDYES then
                     DeleteFile(fs)
                  else
                     exit;
          
             end;