请问如何用vc将两个word文档 合并成一个word文档。拜托了

myazhe 2003-09-09 01:06:12
请问如何用vc将两个word文档 合并成一个word文档。拜托了
...全文
538 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cernet 2003-09-09
  • 打赏
  • 举报
回复
up
gzshd 2003-09-09
  • 打赏
  • 举报
回复
#include "msword9.h"


_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();//粘粘
}
bcpl 2003-09-09
  • 打赏
  • 举报
回复
还是用脚本方便

void MergeDoc(LPCTSTR sDoc1, LPCTSTR sDoc2, LPCTSTR sDocOutput)
{
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");
}
zhenbe 2003-09-09
  • 打赏
  • 举报
回复
我没有试过,不过,我想应该可以的。
用二进制方式打开文件,一个用可以append(添加) 的,然后将另一个文件中的全部读出来,在写入第一个文件,就ok了,我想可以的。不过一定得用二进制。
ifengfeng 2003-09-09
  • 打赏
  • 举报
回复
用automation把问打开取出内容再附加到另一个WORD文件里。
msword.olb

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧