纠结的问题,在网上查了很久,也只碰到有人遇到类似的问题,但是没有任何解决方法。
也找过微软的技术支持,最后研究半天,给出了答复是
“由于这个不是微软产品报出来的错误,所以我们的案例库中没有记载这样的错误信息。另外vbs脚本调用Excel应用程序对象正常,所以严格来说这个问题超出了我们能够支持的范围。我会帮您继续在Internet上继续搜索这个报错,但是多数论坛没有这方面的专家进行支持所以这个报错问题通常都没有解决。”因为程序用了很多年了,最近突然开始陆陆续续有用户(不是一个单位,是不同单位的用户都有这个问题)反映导入excle报错,后来我们看了一下,就是在调用
createoleobject('excel.application') 报错了提示"不支持此接口"(说没装office的就不用关注这个问题了)
全部的错误提示为“Project test_excel.exe raised exception class EOleSysError with message '不支持此接口',Process stopped,Use step or Run to continue”而且客户机器上的excel是可以正常打开的,而且用vbscript的createobject("excel.application")是可以调用excel的,就是delphi的不行。最纠结的是,本来这些客户都用的好好的,突然有一个月就开始说这个功能有问题了,也不知道是什么问题导致的,也不知道怎么解决。delphi现在没落了,不知道这个问题还可不可能解决啊  

解决方案 »

  1.   

    也重装或者修复过office,都没用,重装系统没试过,就算可以我也不可能给全部出问题的用户都重装系统啊。
      

  2.   

    用户一般都不会安装什么软件的,都一直都office2003版本的,就算是换了版本也不可能不行啊我自己的2007也可以导入啊
      

  3.   

    unit ComObj;function CreateOleObject(const ClassName: string): IDispatch;
    var
      ClassID: TCLSID;
    begin
      ClassID := ProgIDToClassID(ClassName);
      OleCheck(CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or
        CLSCTX_LOCAL_SERVER, IDispatch, Result));
    end;function ProgIDToClassID(const ProgID: string): TGUID;
    begin
      OleCheck(CLSIDFromProgID(PWideChar(WideString(ProgID)), Result));
    end;unit ActiveX;
    {$EXTERNALSYM CLSIDFromProgID}
    function CLSIDFromProgID(pszProgID: POleStr; out clsid: TCLSID): HResult; stdcall;function CLSIDFromProgID;               external ole32 name 'CLSIDFromProgID';ole32    = 'ole32.dll';
    procedure OleCheck(Result: HResult);
    begin
      if not Succeeded(Result) then OleError(Result);
    end;
    function Succeeded(Res: HResult): Boolean;
    begin
      Result := Res and $80000000 = 0;
    end;procedure OleError(ErrorCode: HResult);
    begin
      raise EOleSysError.Create('', ErrorCode, 0);
    end;可是无法断点跟到CreateOleObject里面去啊  
      

  4.   

    应该是客户端环境原因,有可能是安装了某个非原版(精简版、绿色版)的Excel所致
      

  5.   

    project options->compiler->选中use debug dcu,就可以跟踪进去了