本人是初学者,最近在别写一个Word文件检索程序,需要将Word文件中的文字内容提取出来然后进行分词。使用的平台是Visual Studio 2008 C++创建的Windows窗口应用程序。下面是我出现问题的代码。Microsoft::Office::Interop::Word::Application^ WordApp = gcnew Microsoft::Office::Interop::Word::Application();
Microsoft::Office::Interop::Word::Document^ doc;
Object^ nullobj;
nullobj = System::Reflection::Missing::Value;
char *m = "E:\\aaa.docx";  //文件路径
String^ mString = gcnew String(m);
Object^ mObj = mString;
Object^ saverChanges = true;
doc = WordApp->Documents->Open(mObj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj,nullobj);
mString = doc->Content->Text;  //提取文本内容
doc->Close(saverChanges,nullobj,nullobj);
WordApp->Quit(saverChanges,nullobj,nullobj);使用编译器编译后,出现如下错误信息:
1>e:\projects\word\readword\Form1.h(108) : error C2882: “Text”: 在表达式中非法使用命名空间标识符
1>e:\projects\word\readword\Form1.h(109) : error C2385: 对“Close”的访问不明确
1>        可能是“Close”(位于基“Microsoft::Office::Interop::Word::_Document”中)
1>        也可能是“Close”(位于基“Microsoft::Office::Interop::Word::DocumentEvents2_Event”中)
1>e:\projects\word\readword\Form1.h(109) : error C3861: “Close”: 找不到标识符
1>e:\projects\word\readword\Form1.h(110) : error C2385: 对“Quit”的访问不明确
1>        可能是“Quit”(位于基“Microsoft::Office::Interop::Word::_Application”中)
1>        也可能是“Quit”(位于基“Microsoft::Office::Interop::Word::ApplicationEvents4_Event”中)
1>e:\projects\word\readword\Form1.h(110) : error C3861: “Quit”: 找不到标识符本人实在是想不到解决方案了,跪请各位高手指点!谢谢!

解决方案 »

  1.   

    你应该创建MFC程序,而不是Windows窗口应用程序,这个不是VC的,应该是.net的
    .net里没有指针的概念吧
      

  2.   

    http://blog.csdn.net/vieri_ch/article/details/7560752VC如何读取Word文档中的批注内容
     
    第一步 import office com对象库
     
    Stdafx.h.
     
    #import "C:\Program Files (x86)\Common Files\MicrosoftShared\OFFICE14\MSO.dll" \
     
    rename("RGB", "_OfficeRGB")          #import "C:\Program Files (x86)\Common Files\MicrosoftShared\VBA\VBA6\VBE6EXT.OLB" 
     
    #import "D:\Program Files\MicrosoftOffice\Office14\MSWORD.OLB"
     
    rename("ExitWindows","_OfficeExitWindows") \
     
    rename("FindText", "_ScriptFindText")  
     
    第二步 .cpp
     
    if(FAILED(::CoInitialize(NULL)))
     
            return;
     
     
     
        HRESULT  hr = S_OK;
     
        Word::_ApplicationPtr pApp=NULL;
     
        try
     
        {
     
     
     
           pApp.CreateInstance (__uuidof(Word::Application),NULL);
     
            pApp ->PutVisible(VARIANT_TRUE);
     
     
     
            Word::_DocumentPtr pDoc=pApp->GetDocuments()->Open(&(_variant_t("C:\\FreeX.docx")));
     
            _bstr_t content=pDoc->Content->Text;
     
            longnCmtCount = pDoc->Comments->Count;
     
            TRACE("Word content: %s\n", (LPCTSTR)(_bstr_t)content);
     
     
     
            for(long i = 1; i < nCmtCount+1; i++)
     
            {
     
                Word::CommentPtrpCmt=  pDoc->Comments->Item(i);
     
                _bstr_t bstrCmt =pCmt->Range->Text;
     
                TRACE("WordComments[%d]: %s\n", i, (LPCTSTR)bstrCmt);
     
                pCmt.Release();
     
                pCmt = NULL;
     
            }
     
            pDoc->Close();
     
            pApp->Quit();
     
     
     
            //release documentptr smart pointer;
     
            pDoc.Release();
     
        }
     
        catch(_com_error pCome)
     
        {
     
            TRACE("Error info: %s\n", (LPCTSTR)(_bstr_t)(pCome.Description()));
     
            TRACE("Error info: %s\n", (pCome.ErrorMessage()));
     
        }
     
        if(pApp)
     
        {
     
            pApp.Release();
     
        }
     
        ::CoUninitialize();
     
     
      

  3.   

    你连.net和MFC都没区分这种一般都是ole操作的,自己google看