环境:win7+vs2010+office2010/20131、创建MFC工程,非Unicode。2、添加Word的类库添加所有的接口,可以作为一个文件夹,以后再使用只要加入该文件夹就可以了。由于函数命名冲突,需要在生成的头文件中做相应处理,即://#importC:\\ProgramFiles\\MicrosoftOffice\\Office14\\MSWORD.OLBno_namespace#importC:\\ProgramFiles\\MicrosoftOffice\\Office14\\MSWORD.OLBno_namespace\raw_interfaces_only\rename(FindText,_FindText)\rename(Rectangle,_Rectangle)\rename(ExitWindows,_ExitWindows)对于不同版本的office,其默认的类型库位置如下表所示:Office版本路径Office2003C:\ProgramFiles\MicrosoftOffice\Office11Office2007C:\ProgramFiles\MicrosoftOffice\Office12Office2010C:\ProgramFiles\MicrosoftOffice\Office14Office2013C:\ProgramFiles\MicrosoftOffice\Office15特别的,word2013在vc2010下必须手动指定类型库文件位置。3、在stdafx中添加调用的头文件#includeWord2010/CApplication.h//word程序对象#includeWord2010/CDocuments.h//文档集对象#includeWord2010/CDocument0.h//单个docx对象#includeWord2010/CSelection.h//该对象代表窗口或窗格中的当前所选内容,使用率最高#includeWord2010/CCell.h//表格单元格#includeWord2010/CCells.h//表格单元格集合#includeWord2010/CRange.h//该对象代表文档中的一个连续范围#includeWord2010/CTable0.h//单个表格#includeWord2010/CTables0.h//表格集合#includeWord2010/CFont0.h//字体#includeWord2010/CParagraphs.h//段落集合#includeWord2010/CParagraphFormat.h//段落样式#includeWord2010/CParagraph.h//单个段落#includeWord2010/CnlineShape.h//Inline图形对象集合#includeWord2010/CnlineShapes.h//单个Inline图像对象#includeWord2010/CRow.h//单个行#includeWord2010/CRows.h//行集合#includeWord2010/CFields.h#includeWord2010/CPane0.h//页眉等设置#includeWord2010/CWindow0.h//页眉等设置#includeWord2010/CView0.h//页眉等设置#includeWord2010/CPageSetup.h//页面设置4、注销每个引入的头文件的import行//#importC:\\ProgramFiles\\MicrosoftOffice\\Office14\\MSWORD.OLBno_namespace不过如果使用wdMove等参数的话,只需要在CApplication.h文件中改为://#importC:\\ProgramFiles\\MicrosoftOffice\\Office14\\MSWORD.OLBno_namespace#importC:\\ProgramFiles\\MicrosoftOffice\\Office14\\MSWORD.OLBno_namespace\raw_interfaces_only\rename(FindText,_FindText)\rename(Rectangle,_Rectangle)\rename(ExitWindows,_ExitWindows)否则,如果没有上面一段,则报错提示为(即全部头文件都注销import的情况下):但是上述的方法会带来一个问题,就是当word版本改变时会出现问题,解决办法就是上述报错的变量都用其数值代替就不会有问题了(写代码时可以加上用以查看wdMove等变量的值),如下面一些:wdAlignParagraphLeft=0wdAlignParagraphCenter=1wdAlignParagraphRight=2wdAlignParagraphJustify=3wdParagraph=4wdMove=0wdStyleHeading1=-2wdStory=6页面纵向wdOrientPortrait=0页面横向wdOrientLandscape=1enumWdUnits{wdCharacter=1,//字母wdWord=2,//单词wdSentence=3,//句子wdParagraph=4,//段落wdLine=5,//行wdStory=6,//所选区域wdScreen=7,//当前屏幕wdSection=8,//部分wdColumn=9,//列wdRow=10,//行wdWindow=11,//窗口wdCell=12,//单元格wdCharacterFormatting=13,//字体格式wdParagraphFormatting=14,//段落格式wdTable=15,//表格wdItem=16//项目};具体可以参考手册或者通过VBA代码查看。5、到CXXXApp.cpp文件中找到InitInstance函数添加代码://例如修改为公司或组织名SetRegistryKey(_T(应用程序向导生成的本地应用程序));if(!AfxOleInit()){AfxMessageBox(_T(无法初始化COM的动态链接库!));returnFALSE;}这一步可以通过在创建MFC工程时,勾选“自动化”。6、具体代码添加按钮,在按钮中实现:voidCVCForWordDlg::OnBnClickedButton1(){//TODO:在此添加控件通知处理程序代码COleVariantcovZero((short)0),covTrue((short)TRUE),covFalse((short)FALSE),covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR),covDocxType((short)0);//定义word变量CApplicationwordApp;//wordAppCDocumentsdocxs;//docxsCDocument0docx,docx_active;//docxif(!wordApp.CreateDispatch(_T(Word.Application)))//实例化wordApp,必须有初始化{AfxMessageBox(_T(本机没有安装word产品!));return;}else{wordApp.put_Visible(FALSE);//设置文档开始不可见CStringwordVersion=wordApp.get_Version();//获得当前word的版本,比如word2010为14.0,2013为15.0//******************添加一个document******************//得到docxsdocxs=wordApp.get_Documents();//或者下面一段//=====================================//LPDISPATCHdisp=wordApp.get_Documents();//if(NULL==disp)//return;//FALSE;//docxs.AttachDispatch(disp);//if(NULL==docxs.m_lpDispatch)//return;//FALSE;//=====================================//添加一个docxdocx=docxs.Add(covOptional,covOptional,covOptional,covOptional);//未用模板时,或者下面段两种//=====================================//2,未用模板//docx.AttachDispatch(docxs.Add(covOptional,covOptional,covOptional,covOptional));//3,使用模板//CComVarianttpl(_T()),Visble,DocxType(0),NewTemplate(false);//docx=docxs.Add(&tpl,&NewTemplate,&DocxType,&Visble);//=====================================if(NULL==docx.m_lpDispatch)return;//******************设置页边距******************//放在创建文档后,需要CPageSetup.hdocx_active=wordApp.get_ActiveDocument();CPageSetupoPageSetup=docx_active.get_PageSetup();//设置为页面方向和页边距if(oPageSetup.get_Orientation()==0)//若为纵向则设置为横向,纵向wdOrientPortrait=0,横向wdOrientLandscape=1{oPageSetup.put_Orientation(1);//横向//设置上下左右变距,单位缇,以下参数设置的页边距是“适中”oPageSetup.put_TopMargin((float)72);//适中时72=2.54cm,默认时90=3.17cm;10≈0.35cmoPageSetup.put_BottomMargin((float)72);//适中时72=2.54cm,默认时90=3.17cm;10≈0.35cmoPageSetup.put_LeftMargin((float)54);//适中时54=1.9cm,默认时72=2.54cmoPageSetup.put_RightMargin((float)54);//适中时54=1.9cm,默认时72=2.54cm}//else//设置为纵向//{//oPageSetup.put_Orientation(0);////设置上下左右变距,单位缇,以下参数设置的页边距是“适中”//oPageSetup.put_TopMargin((float)72);//适中时72=2.54cm,默认或普通时72=2.54cm;10≈0.35cm//oPageSetup.put_BottomMargin((float)72);//适中时72=2.54cm,默认或普通时72=2.54cm;10≈0.35cm//oPageSetup.put_LeftMargin((float)54);//适中时54=1.9cm,默认或普通时90=3.17cm//oPageSetup.put_RightMargin((float)54);//适中时54=1.9cm,默认或普通时90=3.17cm//}//声明一个CSelection对象,并实例化CSelectionwordSelection=wordApp.get_Select