忘了贴问题了,上面的代码执行后,Excel进程释放不掉!!!

解决方案 »

  1.   


      WorkBook1, WorkBook2: Variant;
     
      中的‘Variant’改成‘OLEVariant’试试
      并在uses 中添加COMOBJ
      

  2.   

    要执行 Excel.DisConnect;finally
        if not VarISEmpty(Excel) then
      try
          Excel.Quit;
      finally
          Excel.DisConnect;
      end;
        Excel := Unassigned;
    end
      

  3.   

    to shao528(红雪) 
       我用的是Variant不支持 DisConnect 方法!!!
      

  4.   

    to lx_thunder(玄灵子)   还是不行!!!
      

  5.   

    我发现方法了,在大富翁上查的,不是正途,但可以解决问题,原理是杀死Excel
    的进程,如有直接的解决方法,请大虾们不吝告知!!!谢谢!!!解决办法如下://杀死Excel的进程的函数(感谢这位朋友,我没记住他的ID,抱歉)
    procedure TerminateOLE;
    var
      FSnapshotHandle:THandle;
      FProcessEntry32:TProcessEntry32;
      Ret : BOOL;
      ProcessID : integer;
      s:string;
    begin
      FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
      FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
      Ret:=Process32First(FSnapshotHandle,FProcessEntry32);
      while Ret do
      begin
        s:=ExtractFileName(FProcessEntry32.szExeFile);
        if s='EXCEL.EXE' then
        begin
          ProcessID:=FProcessEntry32.th32ProcessID;
          TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,ProcessID),1);
          s:='';
        end;
        Ret:=Process32Next(FSnapshotHandle,FProcessEntry32);
      end;
    end;//我的旧代码
    procedure TfmMain.BitBtn1Click(Sender: TObject);
    var
      WorkBook1, WorkBook2: OLEVariant;
    begin
      try
        Excel := Unassigned;
        Excel := CreateOleObject('Excel.Application');    //打开文件1
        Excel.WorkBooks.Open(fe2000.Text);
        WorkBook1 := Excel.ActiveWorkBook;
        WorkBook1.Close;    //打开文件2
        Excel.WorkBooks.Open(fe2001.Text);
        WorkBook2 := Excel.ActiveWorkBook;
        WorkBook2.Close;
      finally
        if not VarISEmpty(Excel) then
          Excel.Quit;
        Excel := Unassigned;
        TerminateOLE;                 //加到这里
      end;end;
    执行之后,发现Excel的进程没有了,也可以打开Excel文件了!!!
    我发现这个问题在各个论坛上都有,但只有一个哥们将答案贴出来了,
    很多都说“谢谢,我知道答案了,请斑竹结束这个帖子吧”,我希望
    如果某位大虾提的问题自己解决了,请将答案也贴出来,这样也给别的
    难兄难弟提供方便,希望得到大家的响应!!!