我用的是下面的代码:
void COfficetestDlg::OnOK()
{
_Application objWord;
if (!objWord.CreateDispatch("Word.Application"))
{
AfxMessageBox("Couldn't get Word object.");
return;
}
}运行后.点击ok按钮。
情况出现了不测:window的错误提示出现了。
调试发现如下提示:
调试到该行停止:if (!objWord.CreateDispatch("Word.Application"))
可能是变量objWord没有分配空间.
请高手指点.
在线等.

解决方案 »

  1.   

    可以直接调用进程word.exe,
    ^_^,其实我只在c#里面做过.
      

  2.   

    但是我还得以后对它进行office进行编程哪!怎么办?用进程后怎么处理?
      

  3.   

    参考
    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=193075
      

  4.   

    #include "stdafx.h"
    #import "E:\Program Files\Microsoft Office\Office10\MSWORD.OLB" named_guids raw_interfaces_only  rename("ExitWindows", "wordExitWindows")
    void wordprint()
    {
    Word::_ApplicationPtr app;
    app.CreateInstance("Word.Application");
    Word::DocumentsPtr docs;
    app->get_Documents(&docs);
    Word::_DocumentPtr doc;
    _variant_t vFileName("c:\\a.doc");
    _variant_t vOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
    _variant_t vTrue(VARIANT_TRUE);
    _variant_t vFalse(VARIANT_FALSE);
    docs->Open (
    /*[in]*/&vFileName,
    /*[in] VARIANT * ConfirmConversions*/&vOptional,
    /*[in] VARIANT * ReadOnly*/&vOptional,
    /*[in] VARIANT * AddToRecentFiles*/&vOptional,
    /*[in] VARIANT * PasswordDocument*/&vOptional,
    /*[in] VARIANT * PasswordTemplate*/&vOptional,
    /*[in] VARIANT * Revert*/&vOptional,
    /*[in] VARIANT * WritePasswordDocument*/&vOptional,
    /*[in] VARIANT * WritePasswordTemplate*/&vOptional,
    /*[in] VARIANT * Format*/&vOptional,
    /*[in] VARIANT * Encoding*/&vOptional,
    /*[in] VARIANT * Visible*/&vOptional,
    /*[in] VARIANT * OpenAndRepair*/&vOptional,
    /*[in] VARIANT * DocumentDirection*/&vOptional,
    /*[in] VARIANT * NoEncodingDialog*/&vOptional,
    /*[out,retval]*/ &doc );
    _variant_t vCopies((short)1);
    app->PrintOut (
    /*[in] VARIANT * Background = &vtMissing*/ &vTrue ,
    /*[in] VARIANT * Append = &vtMissing*/&vOptional ,
    /*[in] VARIANT * Range = &vtMissing*/ &vOptional ,
    /*[in] VARIANT * OutputFileName = &vtMissing*/&vOptional ,
    /*[in] VARIANT * From = &vtMissing*/ &vOptional,
    /*[in] VARIANT * To = &vtMissing*/ &vOptional,
    /*[in] VARIANT * Item = &vtMissing*/ &vOptional,
    /*[in] VARIANT * Copies = &vtMissing*/&vCopies ,
    /*[in] VARIANT * Pages = &vtMissing*/ &vOptional,
    /*[in] VARIANT * PageType = &vtMissing*/&vOptional ,
    /*[in] VARIANT * PrintToFile = &vtMissing*/ &vFalse,
    /*[in] VARIANT * Collate = &vtMissing*/ &vOptional,
    /*[in] VARIANT * FileName = &vtMissing*/ &vOptional,
    /*[in] VARIANT * ActivePrinterMacGX = &vtMissing*/ &vOptional,
    /*[in] VARIANT * ManualDuplexPrint = &vtMissing*/&vOptional ,
    /*[in] VARIANT * PrintZoomColumn = &vtMissing*/ &vOptional,
    /*[in] VARIANT * PrintZoomRow = &vtMissing*/ &vOptional,
    /*[in] VARIANT * PrintZoomPaperWidth = &vtMissing*/ &vOptional,
    /*[in] VARIANT * PrintZoomPaperHeight = &vtMissing*/ &vOptional) ;
    Sleep(3000);
    app->Quit(&vOptional,&vOptional,&vOptional);}
    int _tmain(int argc, _TCHAR* argv[])
    {
    printf("Automate word to print a document, test by masterz with VC.NET2003 on WindowXP, OfficeXP\n");
    CoInitialize(NULL);
    wordprint();
    CoUninitialize();
    return 0;
    }