csdn 上的例子为什么不能用啊?
求救!!!!

解决方案 »

  1.   

    see this,can help you.
    http://www.codeproject.com/com/xoffice.asp
    http://www.codeproject.com/com/ole_automation.asp
      

  2.   

    谢谢,可是这两个程序好像是打开一个word啊我需要把word 嵌入到自己的应用程序中,有这方面的资料吗?
      

  3.   

    See the article below, FYI :http://www.chinaoak.com/download/material/techtips/vc-learn/VC/MFC-WORD.htm
      

  4.   

    1. 在Microsoft Developer Studio中,新建一个“MFC AppWizard (exe)”工程,命名为“AutoProject”。在MFC AppWizard第一步,选择“Dialog Based”作为应用类型,点击完成。
    2. 首先应从Microsoft Visual C++集成开发环境中点击View菜单下的ClassWizard子菜单,选择Automation选项卡,点击Add Class并选择“From a TypeLibrary”,找到Office目录并选中Microsoft Word 97 类型库Word8.olb,选中所有类。点击OK,关闭MFC ClassWizard对话框。此时通过MFC,Visual C++ ClassWizard从Microsoft Word type library生成“wrapper classes”。
    3. 删除"IDD_AUTOPROJECT_DIALOG"对话框上的所有控件,添加一个Command Button命名为"IDRUN",标题为"Run"。为IDRUN添加单击事件的消息捕获函数"OnRun"。
    4. 在CAutoProjectApp::InitInstance() 函数中添加如下代码,以实现加载和初始化COM接口:
    BOOL CAutoProjectApp::InitInstance()
    {
         if(!AfxOleInit())  // 添加的代码由此开始
         {
                AfxMessageBox("Could not initialize COM dll");
                return FALSE;
         }              // 添加结束     AfxEnableControlContainer();
         … …
    }
    5. 在AutoProjectDlg.cpp文件的头部添加如下语句:
    #include "MsWord8.h"
    6. 在CAutoProjectDlg::OnRun()中添加Office自动化代码,如下:    void CAutoProjectDlg::OnRun()
        {
            _Application oWordApp;  // oWordApp is the Word _Application object        // Start Word and get Application object...
            if(!oWordApp.CreateDispatch("Word.Application"))
            {
                AfxMessageBox("Couldn't start Word.");
            }
            else
            {
                //Make Word Visible and display a message
                oWordApp.SetVisible(TRUE);
                AfxMessageBox ("Word is Running!");
            }
    }
    7. Build并运行这个工程。运行结果:当点击Run按钮时,Microsoft Word将被启动。
      

  5.   

    to qing_li73(bluemoon) 那个程序我试过的,在CreateNewItem 的时候出错报word的没有注册,可是我安装了word 啊!实在弄不明白,求救!
      

  6.   

    CSDN 上的例子报错:建立对象失败。请确认该对象已被注册入系统哪位高手帮帮忙啊,不要不睬我啊!
      

  7.   

    把Word嵌入到自己的程序中,就是把自己的程序作为一个COM Container,把Word作为一个COM Server,在建立MFC程序使用向导的时候,就要选择Container。这方面的资料可能更多的要看COM方面的书了。
    系统有没有注册Office的组件,可以在OLE/COM Object Viewer里面或是直接在注册表里面找找看。注册表里面可以看看有没有注册Word.Application对象。
      

  8.   

    void CEmbed_WordView::EmbedAutomateWord()
    {
    BeginWaitCursor(); 
    CEmbed_WordCntrItem* pItem = NULL; 
    TRY 

    CEmbed_WordDoc* pDoc = GetDocument(); 
    ASSERT_VALID(pDoc); 
    pItem = new CEmbed_WordCntrItem(pDoc); 
    ASSERT_VALID(pItem); 
    GetClientRect(&pItem->rect); 
    CLSID clsid; 
    if(FAILED(::CLSIDFromProgID(L"Word.document",&clsid))) 
    AfxThrowMemoryException(); 
    if(!pItem->CreateNewItem(clsid)) 
    AfxThrowMemoryException(); 
    ASSERT_VALID(pItem); 
    pItem->DoVerb(OLEIVERB_SHOW, this); 
    m_pSelection = pItem; 
    pDoc->UpdateAllViews(NULL); 
    LPDISPATCH lpDisp; 
    lpDisp = pItem->GetIDispatch(); 

    CATCH(CException, e) 

    if (pItem != NULL) 

    ASSERT_VALID(pItem); 
    pItem->Delete(); 

    AfxMessageBox(IDP_FAILED_TO_CREATE); 

    END_CATCH 
    EndWaitCursor(); }以上程序执行到 CreateNewItem() 时失败报错:建立对象失败。请确认该对象已被注册入系统
    求教各位?
      

  9.   

    再程序里直接打开word不就得了?
      

  10.   

    regsvr32 youcontrol.ocx,注册一下就可以了
      

  11.   

    To: qing_li73(bluemoon)
        我照了这个例子(http://www.chinaoak.com/download/material/techtips/vc-learn/VC/MFC-WORD.htm)做了之后出现了一个问题,就是在onDraw函数中调用OnGetItemPosition时提示出保护成员无法调用,如果不修改onDraw的话出来的程序word在客户区占的地方又很小,打出的字也很小。
      

  12.   

    to xfjkiss(西门吹雪)我也照了这个例子(http://www.chinaoak.com/download/material/techtips/vc-learn/VC/MFC-WORD.htm)做了.但是,执行到 CreateNewItem() 时失败报错:建立对象失败。请确认该对象已被注册入系统求教怎么解决?你说的问题,只要把OnGetItemPosition变成public就行了。
      

  13.   

    我重新安装了office也没有用!小弟真的很困惑啊!哪位高手来救命啊!
      

  14.   

    我遇到过你这种情况。我是修复安装OS后,又重装了MSWord就好了我是Win2k+offic2k
      

  15.   

    修复安装OS后,又重装了MSWord可是还没解决问题高手求救啊!
      

  16.   

    但是,如果嵌入excel 或 powerpoint 都没问题可能不是office安装的问题!需要大家来帮忙啊!
      

  17.   

    我那天的做法是:
    1:找一台能CreateNewItem()的机子,把它上面的OLE*.*全拷到我的%systemroot%\new flod\下
    2:进入命令行修复模式,用拷过来的OLE*.*覆盖%systemroot%\下的OLE*.*.
    3: 试了试没起作用,接着修复安装Win2k Professional.
    4: 卸载Office2k.
    5: 重装Office2k.最好把第5步提前。我这样做后的确好了
      

  18.   

    各位高手救命吧!我重装了 win2k又重装了 office2k还是不行,真是痛苦! 各位高手有没有好的办法,或其他实现方法。有代码的话希望能发给我 :[email protected]
      

  19.   

    koala_wk() :
    你可以试试就用VC自动生成的代码(我看过,和qing_li73(bluemoon)给出的链接上的代码差不多),创建一个SDI程序,注意选择“Container”,运行后在编辑里面选择插入新对象里面看看有没有Word文档对象。
    或者:
    打开你的注册表,打开HKEY_CLASSES_ROOT,看看下面有没有HKEY_CLASSES_ROOT\Word.Application和HKEY_CLASSES_ROOT\Word.Document子项,如果没有,说明你的Word根本就没注册进注册表。根据Word.Document下面的CLSID查看Word的Document对象的CLSID值,再根据这个值查找HKEY_CLASSES_ROOT\CLSID下面有没有关于这个CLSID值的子项,在里面LocalServer32的值可以看到你的Word的路径,看看对不对。再确定在应用程序的初始化里使用了AfxOleInit()函数。如果这些都没错的话而你的程序还是不能运行的话,那就我也不知道了!^_^
      

  20.   

    VC自动生成的代码我也试过了,Word不行,Excel等都可以注册表信息也正确,AfxOleInit()也初始化了就是不行!真是伤脑筋,各位高手快帮忙找找原因吧!
      

  21.   

    http://www.codetools.com/menu/MenuXP2/MenuXP_src.zip
      

  22.   

    你潜入一个HTMLVIEW,然后浏览 WORD文件~~~
    他会自动~~~
      

  23.   

    我来了!!1、你如果要在你和程序中加入word 的代码:Ctrl+W->Add Class->form ...
    打开office目录下的msword9.olb,全选其中的类。2、用你的程序调用word :
    按照MSDN Q221992 的步骤在你和程序中加入宏(以OnInitialUpdate()为基准函数),在调用宏的地方输入 
    Set obj=CreateObject("word.application")
    obj.visible=true
    msgbox("ok")
    Set Obj=nothing
      

  24.   

    to :ajiva(编程菜鸟小旋风 办事不到一分钟) 你的方法很有效,但是还有一个小问题要求教?HTMLVIEW 打开 WORD文件后,工具条上的功能按钮没有嵌入,在这种方式下有没有办法嵌入一些功能按钮啊?急救?
      

  25.   

    to  zswzwy(对! 我就是被封杀的☆ZSWZWY☆!) ( 放心吧,只要你的方法有效,我就结帐,进来的每位都有分都不会少的!
      

  26.   

    to  zswzwy(对! 我就是被封杀的☆ZSWZWY☆!) ( MSDN Q221992 现在看不到,你有没有这篇文章,贴一下,或者发到我的信箱 : [email protected]多谢啦!
      

  27.   

    关注!msdn有类似的文章!
    不难的,解决问题的思路很死:
    ------------------
    在Office应用程序中,菜单和工具栏被合成在一个可编程的名为CommandBars的集合中。作为一种通用的可编程对象,CommandBars可以成为任何的Office应用程序对象模型的一部分,CommandBars所掩盖的是一种统一的编程机制,该机制使得单个的工具栏和菜单项可以被添加到相应的应用程序中。每一个CommandBars集合都是有不同的CommandBar Objects组成;每一个CommandBars Object 有又不同的称为CommandBarControls的对象组成!
    CommadBarControls 所表示的是由不同的对象和子对象构成的复杂的架构,进而用这些对象和子对象组成一个单独的对象模型。一个CommandBarControl 本身包含一个CommandBar 对象(可以访问插件中的该对象的属性)。因此,最终使得每一个处于CommandBarControls 集合中CommandBarControl 对象既可以是一个CommandBarComoboBox(Toolbar combobox),也可以是一个CommandBarButton(Toolbar button),抑或是一个CommandBarPopup(Popup menu).我渴望能绘出一个清晰的表示对象关系的示意图,但是我确实不擅长绘图(说心里话),当然了,我也确信这样的关系图在msdn中关于如何描述MS Office CommandBars的章节中有清晰地说明!
      

  28.   

    谢谢,高手们的帮助,现在总结一下我的问题我使用的是VC,Win2000,Office2000,
    希望达到的目的是在自己工程中的一个View中嵌入Word的编辑窗口,并在工具条上
    嵌入一些Word的基本功能按钮。遇到的问题是:使用了msdn 和csdn上类似的例子Embed_Word,结果是在OleCreate时失败,返回的错误是“内存不足”,但嵌入Excel,Winpad等都能成功重装了Win2000,Office2000后问题仍然存在,但在其他同样配置的机器上,用相同的光盘安装了Win2000,Office2000后有的机器上可以成功,有的不行。上诉问题让我非常困惑,仔细核对了注册表等项目都没有问题。
    问题无法解决的情况下,转而寻求其它解决方法,ajiva(编程菜鸟小旋风 办事不到一分钟) 高手提供的在CHtmlView中打开word
    文档解决了一部分问题(即:将word编辑界面嵌入了View中),但工具条仍然没有嵌入。现在求助各位高手一个完整的解决方案,谢谢!
      

  29.   

    在按vcracoon(vcracoon) 步骤操作的过程中,发现在我的安装文件夹下找不到“2. 首先应从Microsoft Visual C++集成开发环境中点击View菜单下的ClassWizard子菜单,选择Automation选项卡,点击Add Class并选择“From a TypeLibrary”,找到Office目录并选中Microsoft Word 97 类型库Word8.olb,选中所有类。点击OK,关闭MFC ClassWizard对话框。此时通过MFC,Visual C++ ClassWizard从Microsoft Word type library生成“wrapper classes”。”中所说的Word8.olb,当然我知道应该是MSWORD9.OLB,于是我就到我的备份盘(我把常用的软件都备份载了硬盘上,安装也都是从硬盘上进行)去找,果然找到了,由此我想到是不是有可能使这个原因引起的?office自动化方面还从未涉及过,今天过来也主要是学习一下,呵呵。
      

  30.   

    to  romberg2002() 谢谢老兄的提醒,不过我好像没有office 97的盘了
    能不能麻烦你,方便的话把word8.olb这个文件发给我啊!
    [email protected]
      

  31.   

    我估计 只有自己 调COM接口自己写工具条了我想和IE内核浏览起差不多了。。VIEW是COM的,自己伪装成IE客户端~~你可以看看MYIE 源代码
    ~~
      

  32.   

    我明白了,你是不是要用word在后台工作呢?我那天刚给一个CSDN上的朋友写完一个这样的程序
    你可以参考一下,或者我告诉你。
      

  33.   

    to zswzwy: 能给我一个吗?我也有分你给我我就发一贴100分的,谢谢!!!
    my e-mail: [email protected]
      

  34.   

    to zswzwy(对! 我就是被封杀的☆ZSWZWY☆!) 你好,能发给我吗?我关注了这么久,也想看看
    [email protected]       谢谢
      

  35.   

    to zswzwy别忘了给我发啊,[email protected]
      

  36.   

    to zswzwy别忘了给我发啊,[email protected]
      

  37.   

    to zswzwy已经收到了,感谢!你是在word的工具条上嵌入了自己的按钮那翻过来,在自己的程序上嵌入word的按钮,该怎么做啊?小弟愚笨,求教?
      

  38.   

    to  zswzwy(对! 我就是被封杀的☆ZSWZWY☆!) 请教?怎么把取道的word工具条加到自己的工程啊?
    小弟看了你的程序很久,还是不太明白,麻烦高手指点一下。最好有点例子,实在不好意思,打扰了,非常感谢!
      

  39.   

    好的,我先结贴了。再开一贴继续求教和散分!谢谢大家!特别是 zswzwy!