程序在对excel操作时一般都是要先打开一个excel文件然后对excel文件进行各种操作,有没有办法在程序操作excel文件的时候,可以同时手工操作另一个文件。

解决方案 »

  1.   

    不行的,如果处理不好,下次再启动Excel后,菜单、工具栏等都会和以前不一样的。不好弄。
    而且会报错~!
      

  2.   

    你在delphi动过菜单什么的吗?你只是通过ole或autoobject向windows请求一个excel的服务,不会影响另外的excel的使用,只能是别的问题引起的
      

  3.   

    我的打开方式是这样的(所有的控件都是系统创建):
    procedure TForm1.open_excel;
    var
        filepath:string;
        str:string;
    begin
        //打开Excel文档模板
        filepath:=extractfilepath(application.ExeName);
        str:=get_document;
    //如果目标Excel文件已经存在,则打开现存文件
        if fileexists(filepath+'report\'+str+'\'+excel_name+'.xls') then
            begin
    excelapp.Workbooks.Open(filepath+'report\'+str+'\'+excel_name+'.xls',emptyparam,emptyparam,emptyparam,
                                        emptyparam,emptyparam,emptyparam,
                                        emptyparam,emptyparam,emptyparam,
                                        emptyparam,emptyparam,emptyparam,0)
            end
            else
            begin
                excelapp.Workbooks.Open(filepath+'model\'+excel_name+'.xls',emptyparam,emptyparam,emptyparam,
                                        emptyparam,emptyparam,emptyparam,emptyparam,
                                        emptyparam,emptyparam,emptyparam,emptyparam,
                                        emptyparam,0);
            end;
        excelbook.ConnectTo(excelapp.Workbooks[excelapp.Workbooks.Count] as _workbook);
        excelsheet.ConnectTo(excelbook.Worksheets[excel_sheet] as _worksheet);
        excelsheet.Activate;
    end;
    不知道这样做有没有问题,但是就会出现在程序调用excel的同时无法手工对另一excel进行操作。
      

  4.   

    我做得时候没有用到
     excelbook.ConnectTo(excelapp.Workbooks[excelapp.Workbooks.Count] as _workbook);
    excelsheet.ConnectTo(excelbook.Worksheets[excel_sheet] as _worksheet);
    excelsheet.Activate;
    这些语句,是可以用的。而且手工操作其他EXCEL没有问题。
    你是不是释放的时候没有完全释放?导致后面出现问题