我写了个ActiveX控件,在这个控件里,我通过调用CreateOleObject("excel.application")来控制Excel,但是这个控件无论在win32应用程序里或是浏览器里运行时,每次一执行这句("CreateOleObject")就出现内存冲突的错误(Access violation at address 049E74CC in module 'Sample.ocx'.Read of address 00000000)。我已经调用了CoInitialize了。我非常不解,是怎么回事呢?请高手赐教。

解决方案 »

  1.   

    貼出代碼吧?? 看錯誤怎麼跟OCX沖突了。是不是在IE裏搞的?
      

  2.   

    你要创建Excel对象,首先你本机必须安装的有OFfice Excel软件才可以,不然肯定不行。而且还和Office的版本有关系。
      

  3.   

    就这么个简单的创建过程都会出错。是不是Delphi编的ActiveX在调用别的ActiveX对象时,还要事先做什么工作?
    procedure TFacade.ExportToExcel;
    var
     _ExcelApp,_WorkBook,_WorkSheet: Variant;
    begin
      try
        _ExcelApp := CreateOleObject('Excel.Application');
      except
        on e : Exception do
        begin
          Application.MessageBox(PChar(Message_NoExcel+e.Message), '', 32);
          Exit;
        end;
      end;
    end;