现在有个问题,请大家帮帮忙!描述一下:
正在做一个程序,delphi读取很多excel,然后处理,这些操作都是放在线程里做的。
现在遇到这种情况,有些excel里面有数据源链接,链接到其他的excel表。在线程里面打开这样的excel以后,会弹出一个“是否更新”的对话框,不管你点击“是”或“否”,程序都会停止运行。试过用:MSExcel.DisplayAlerts := False; 关闭弹出的对话框,但无效,此框始终存在。也参见了网络上用ADO读取excel的方法,但对于合并单元格似乎读不出内容,很恼火。请知道怎么处理的兄弟指点一二,最终我就想实现不弹出对话框而读取数据,然后关闭excel。分不多,见谅哦~~~~~~

解决方案 »

  1.   

    这是Excel本身的问题,和程序没关系,建议将Excel安装完整。
      

  2.   

    这是Excel本身的问题,和程序没关系,建议将Excel安装完整。
    ------------------------------------------------------
    安装完整的EXCEL有用么?如果当前excel中有单元格引用了外部excel中的数据,那么“是否更新”的提示框会始终存在先把这些链接数据都转成实际数值
    ------------------------------------------------------
    在打开excel的时候,提示“是否更新”的框框就已经出来了,根本没机会把那些数据变成实际数值
      

  3.   

    excel(2007版)有一个选项,叫“请求自动更新链接”,把这个选项关掉看
      

  4.   

    excel(2007版)有一个选项,叫“请求自动更新链接”,把这个选项关掉看
    --------------------------------------------------------------
    感谢回答!这个选项应该只针对当前excel本身,如果换一个包含数据链接的excel文件,现象依然存在。
    我要读取的excel文件全在文件服务器上,不可能都用2007去打开并关闭那个选项吧。
      

  5.   

    關閉excel的自動更新看看
      

  6.   

    應該是你的代碼問題調用了線程要注意free,free時要注意先後順序...........
        end; 
        finally 
            ProgressBar1.Visible:=false; 
            showmessage( '当前文件导入完毕,请检查并存盘! '); 
            msExcel.Workbooks.close;        
        end; 
        msExcel.Disconnect; 
        msExcel.Quit; 
        msExcel:=Unassigned; 
    end; 
    .............
      

  7.   

    應該是你的代碼問題調用了線程要注意free,free時要注意先後順序
    ----------------------------------------------------------------
    感谢你的回答!
    在线程里读取excel后,都是free了的
    现在的问题是,服务器上很多excel表,其中部分excel表里含有链接到其他excel表的数据项。用OLE读取或者用ExcelApplication控件组读取时,都会弹出“是否从数据源更新”的提示,点击“是”或“否”后线程都会停止运行。现在想的就是不弹出这个对话框,直接读取,哪怕内容为空,不至于程序死掉。
      

  8.   

    workbook.open时,设置updateLinks参数值为xlUpdateLinksNever
      

  9.   

    他都说了,不可能去把每个文件都改一下的,你还要他去写vba???
      

  10.   

    看来要多打几个字,你才懂我的意思。
    ExcelApplication1.Workbooks.Open有个参数较多的版本,其中有一个参数就是updateLinks,设置为xlUpdateLinksNever
    当程序调用此法时,打开相关文件,则会应用所传入的参数设置。
      

  11.   

    谢谢Avan_Lau的解答,忙完手里的事我就试一下!
      

  12.   

    怎么回事啊,修改后编译通不过:
    xls.WorkBooks.open(fname,xlUpdateLinksNever,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,0);
    提示说“xlUpdateLinksNever”未知标识符
    已经 uses excel2000
      

  13.   

    我也不知道在哪个pas,但是你可以自己定义值(google搜索看看它的枚举值)
            xlUpdateLinksUserSetting = 1
            xlUpdateLinksNever = 2
            xlUpdateLinksAlways = 3
      

  14.   

    导入Excel类型库(Import Type Library)后生成的XXX_TLB.pas源文件中就会有这些枚举值