请问如何用vc将两个word文档 合并成一个word文档。拜托了
解决方案 »
- 请问在classwizard中创建新类与在insert重创建新类有区别吗
- 怎样拦截打印消息?500分碰上!
- 初入VC++.提出简单问题一个
- 在vc里,老师出现link错误,真是奇怪,郁闷死了??
- 谁有使用Mutex源代码,我的线程不能互斥
- vc++中刷新的问题
- 在基于对话框的界面上如何假如另外的对话框,Docking效果的
- CTreeCtrl上的Check Box,怎么把默认的黑方框换成自己的图标
- ActiveX控件在Debug模式下Dialog Create失败,而在Release模式下正常
- 请问win XP 和win2000 win98 是什么关系?
- 求教:如何实现程序对特定文件的响应?
- 怎样在vc中创建自己的web控件?提供思路和查资料途径也给分
msword.olb
用二进制方式打开文件,一个用可以append(添加) 的,然后将另一个文件中的全部读出来,在写入第一个文件,就ok了,我想可以的。不过一定得用二进制。
{
CString sScriptFile("c:\\tmp.vbs");
CString sScript;
sScript.Format(
"merge \"%s\", \"%s\", \"%s\"\n"
"sub merge(doc1, doc2, docoutput)\n"
" dim w,fso,stream,s\n"
" set fso = createobject(\"scripting.filesystemobject\")\n"
" fso.deletefile \"%s\", true\n"
" set w = createobject(\"word.application\")\n"
" With w.Documents.Add(doc1)\n"
" w.Selection.EndKey 6\n"
" w.Selection.TypeParagraph\n"
" w.Selection.InsertFile doc2 \n"
" w.Selection.TypeBackspace\n"
" .SaveAs docoutput\n"
" .Close\n"
" End With\n"
" w.Quit\n"
"end sub",
sDoc1, sDoc2, sDocOutput, sScriptFile);
CStdioFile file;
file.Open(sScriptFile, CStdioFile::modeCreate|CStdioFile::modeWrite);
file.WriteString(sScript);
file.Close();
ShellExecute(NULL, "open", sScriptFile, NULL, "c:\\", SW_HIDE);
}void CDd4Dlg::OnButton1()
{
MergeDoc("c:\\a.doc", "c:\\b.doc", "c:\\c.doc");
AfxMessageBox("done");
}
_Application WordApp; //代表WORD程序
Documents docs,docs1; //代表一个WORD程序里的所有文档
_Document doc,doc1; //代表一个文档 if(!WordApp.CreateDispatch("Word.Application",NULL))//创建一个新的word程序
{
AfxMessageBox("创建ms_word服务失败");
exit(1);
} //让用户能够查看自动化的过程
WordApp.SetVisible(true);
//让docs和word程序连接,docs代表word中所有文档
docs=WordApp.GetDocuments();
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
//用docs来打开一个文档,并将句柄返回给doc
doc=docs.Add(COleVariant(".\\ox.doc"),covOptional,covOptional,covOptional);//将ox1追加到这个ox中
doc1=docs1.Add(COleVariant(".\\ox1.doc"),covOptional,covOptional,covOptional);//原word Paragraph paragraph,paragraph1;//用来表示文档中某一段
Paragraphs paragraphs,paragraphs1;//用来表示文档中所有段
paragraphs1=doc1.GetParagraphs();
paragraphs=doc.GetParagraphs();
for(int i=1;i<=n;i++)//n表示ox1一共的段数
{
paragraph1=paragraphs1.GetItem(n);
Range r=paragraph1.GetRange();
r.Copy();//copy
paragraph=paragraphs.GetLast();//得到最后一段
r=paragraph.GetRange();
r.Paste();//粘粘
}