如题,看了好多资料都是用的mfc,有不用mfc调用word的吗?谢谢!!!

解决方案 »

  1.   

    我在vb.net中调用过,在项目的添加引用里面添加完了,然后在项目里就可以用了,但是我用vs2008建立的vc++win32控制台程序的项目的添加引用都是空白,可能两个操作有差异,在线等答案。。
      

  2.   

    撇开MFC,你只要用C++语法在VC中使用操作com就行了
      

  3.   

    MFC只是在嵌入COM组件部分多了些实现而已,操作Word是跟MFC完全没有任何关系的,
    直接使用COM API即可,也可以用些ATL提供的帮助,比如智能指针。下面的例子代码,用COM API 打开一个word 应用对象,并打开文档:STDMETHODIMP CDocObject::InstantiateAndLoadWord(LPWSTR pwszFile, IOleObject **ppole)
    {
      IUnknown *punkApp=NULL; 
      MSWord::_Application *app=NULL; 
      MSWord::Documents *wDocs=NULL; 
      MSWord::_Document *wDoc=NULL; 
      CLSID   clsidWord; 
      HRESULT hr = CLSIDFromProgID(OLESTR("Word.Application"), &clsidWord); 
    if (FAILED(hr)) return hr;  
    hr = CoCreateInstance(clsidWord, NULL, CLSCTX_LOCAL_SERVER,  IID_IUnknown, (void**)&punkApp); 
    if (SUCCEEDED(hr))  
    {        
    hr = punkApp->QueryInterface(__uuidof(MSWord::_Application),(LPVOID *)&app);
    if (SUCCEEDED(hr))                 
    {                 
    hr = app->get_Documents(&wDocs);

    VARIANT vNoParam;                
    VariantInit(&vNoParam);                
    V_VT(&vNoParam) = VT_ERROR;                 
    V_ERROR(&vNoParam) = DISP_E_PARAMNOTFOUND;                 
    VARIANT vReadOnly;                 
    VariantInit(&vReadOnly);                
    V_VT(&vReadOnly) = VT_BOOL;                 
    V_BOOL(&vReadOnly) = VARIANT_FALSE;  VARIANT vStrName;
    vStrName.vt = VT_BSTR;
    BSTR bstrFilename = SysAllocString(pwszFile); 
    vStrName.bstrVal = bstrFilename;   wDocs->Open(&vStrName,&vNoParam,&vReadOnly,&vNoParam,&vNoParam,&vNoParam,&vNoParam,
    &vNoParam,&vNoParam,&vNoParam,&vNoParam,&vNoParam,&vNoParam,&vNoParam,&vNoParam,&vNoParam);

    app->get_ActiveDocument(&wDoc);

    if (SUCCEEDED(hr))                         
    hr = wDoc->QueryInterface(IID_IOleObject, (void**)ppole);
    VariantClear(&vReadOnly);                
    VariantClear(&vNoParam);                 
    SysFreeString(bstrFilename);                 
    }         
    }  
    if (wDoc != NULL) 
    wDoc->Release(); 
    if (wDocs != NULL)
    wDocs->Release();
    if (app != NULL) 
    app->Release(); 
    if (punkApp != NULL) 
    punkApp->Release();  
    return hr; 
      

  4.   

    Word操作只要是COM提供了方法的都很简单。没什么难度。
    Excel操作是个难题,因为如果深入下去。Excel 的COM方式有很多BUG。
      

  5.   


    对,VBA以组件方式提供,至于是什么方式调用它,没有任何关系,你可以用MFC,也可以用ATL,用VC,也可以用VB ,Delphi,都可以
      

  6.   

    我还想问下就是在VS2008下面怎么添加word的com引用,我的是win32的dll项目,我在项目->属性->添加新引用里面都是空白啊,麻烦大神指点一下!