我在自己的程序里自动化word,向里面写入自己的表格、文本、位图,但是不知道怎样插入统计图表如饼状图等。
  我看了宏语言里,是这样一句话, 
Selection.InlineShapes.AddOLEObject ClassType:="MSGraph.Chart.8", _
        LinkToFile:=False, DisplayAsIcon:=False
    ShowVisualBasicEditor = True我不知道VC里函数AddOLEObject的参数ClassType该怎样写,请高手们不吝赐教!!或者高手有其他更好的方法也请分享出来,再次感谢!!

解决方案 »

  1.   

    www.codeproject.comMay you succeed!
      

  2.   

    thanks, but I  want more !
      

  3.   

    试试这个看:
    COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    ……
    Selection oSelection;
    oSelection = oApp.GetSelection();//oApp指你的word应用实例
    InlineShapes oInlineShapes;
    oInlineShapes = oSelection.GetInlineShapes();
    oInlineShapes.AddOLEObject(COleVariant("MSGraph.Chart.8"), vOpt,  false,
    false, vOpt, vOpt, vOpt, vOpt);
      

  4.   

    visuallife(可视化人生)的确很强,我怎么没想到类型转化呢?
    但还是有点问题,提示我不能传递空的索引指针。我估计可能是最后一个参数的问题,没有位置信息。很想与你交流一下,我的QQ:4185026
    如果你有这方面的例子或你自己的大作,能否分享一下呢?  [email protected] 不胜感激!!!!
      

  5.   

    不敢当,只不过刚刚做过office自动化调用方面的项目,所以知道一点点。
    不知道你是怎么做的,怎么会提示你不能传递空的索引指针?我的qq:57736778
      

  6.   

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dno2kta/html/offaut.asp
      

  7.   

    感谢dxhdxh2k(dxhdxh)大侠的友情出手!
    等问题结了后,一定厚礼送上。欢迎大家参与讨论啊!!
      

  8.   

    COleVariant vFalse;
    vFalse = COleVariant((short)false);
    ……Selection oSelection;
    oSelection = oApp.GetSelection();//oApp指你的word应用实例
    InlineShapes oInlineShapes;
    oInlineShapes = oSelection.GetInlineShapes();
    oInlineShapes.AddOLEObject(COleVariant("MSGraph.Chart.8"), vOpt,  vFalse,
    vFalse, vOpt, vOpt, vOpt, vOpt);//把原来的false换成vFalse
      

  9.   

    再请教一个问题这个函数原形:  InlineShapes::AddPicture(LPCTSTR FileName, VARIANT* LinkToFile, VARIANT* SaveWithDocument, VARIANT* Range)最后一个参数 VARIANT* Range 
    我现在有一个Range变量,但不知道怎么转化成最后一个参数
      

  10.   

    在Word和Excel怎样中插入位图? 原文在csdn

    _Application WordApp; //代表WORD程序
    Documents docs; //代表一个WORD程序里的所有文档
    _Document doc,doc1 //代表一个文档
    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
             ...
    Shapes shs; //代表文档中的所有图形
    shs=doc.GetShapes();
    shs.AddPicture("skybox_bottom.bmp",covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);
    //如果想指定位置可以这样
    //shs.AddPicture("skybox_bottom.bmp",covOptional,covOptional,covOptional,COleVariant((long)100),covOptional,covOptional,covOptional);  指定图片的左上角的y坐标为100,如果图片的宽和高不指定的话就会使用图片的原宽和高
      

  11.   

    用可选变量代替就行了
    COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
      

  12.   

    visuallife(可视化人生)大侠说得没错,但我要对插入图片定位,所以不能用默认参数。我已经解决了,代码如下VARIANT va;
    va.vt=VT_DISPATCH ;///指明整型数据
    va.pdispVal=r; ///赋值   
    inshapes.AddPicture(ss,covOptional, covOptional, &va );