变量已是interface,直接调用方法就可以了,否则
要得到接口,使用类型库,创建接口

解决方案 »

  1.   

    softcool(泰山):能否来个例子之类,清楚点。解决100!
      

  2.   

    OleVariant转成Interface吗?
    IUnKnown(yourOleVariant) as IYourInterface;
      

  3.   

    不行的!我试过了。interface not support
      

  4.   

    那是你的Interface没有在本机注册了。运行一下你的APPSERVER,注册一下吧。
    或者用Regsvr32进行注册。
      

  5.   

    具体点,就是我现在有个olecontainer,这个对象是excel
    如何从这个对象得到TExcelApplication一类所需的接口ExcelApplication,或ExcelWorkBook之类。
      

  6.   

    无类型库使用函数CoCreateInstance,返回一个接口
      

  7.   

    这样的话,你没有定义EXCEL的Interface的文件。那么就直接调用这个OleVariant对象。
    比如WordApplication,就是
    YourOleVariant.Save(....)
    具体函数查看MSDN中的Office文档。
      

  8.   

    你没有定义EXCEL的Interface的文件:
    请问如何定义?
      

  9.   

    Delphi5就有,实际上它是从COM对象中import进来的。在D5中可以uses
    excel97或者excel2000
      

  10.   

    早就uses了,但还是没用。
    我想从OleContainer这个控件来获得excel的接口 
      

  11.   

    OleContainer中不是有OleObject和OleObjectInterface两个属性吗?
    你用用OleObjectInterface,并将其强制转换。用as进行转换吧,这样类型不对还可以报错。
      

  12.   

    我早试过了,两个都报错!!
    : chechy(chechy) :怎么办???
      

  13.   

    我没用过OLECONTAINER,我也不知道。我一般都是用Ole Automation的。
      

  14.   

    Ole Automation:这个又是如何用??能否来个实例?
      

  15.   

    Demos\ActiveX\OleAuto\Word8是对Word的操作。照葫芦画瓢,可以操作Excel。
      

  16.   

    多谢你!但这个不是我要的效果,我为什么用olecontainer,因为这样我的菜单可以与word的菜单结合,但如何从olecontainer获得接口。
      

  17.   

    现在问题是搞不清楚到底OleObjectInterface是什么类型,如果能将其类型识别,那么一切问题都能解决。
      

  18.   

    对阿,但我估计,看帮助,应该就是excelapplication,但是没法强制转
      

  19.   

    我刚才试了一下Word,发现确实不是_application,而是_document。我觉得以此道理,在Excel中可能是WorkSheet。
    下面是我的代码:unit Unit7;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, OleCtnrs, Word2000;type
      TForm1 = class(TForm)
        OleContainer1: TOleContainer;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage((OleContainer1.OleObjectInterface as Word2000._Document).Name);
    end;end.
      

  20.   

    哈哈,蠢,一直没试别的接口,是ExcelWorkBook接口!thank uthank uthank uthank uthank u