VC++ 如何拷贝WORD到剪贴板(含页眉页脚)

nslh520 2015-10-06 02:49:26
VC++ 如何拷贝WORD到剪贴板(含页眉页脚)


CApplication wordApp;
COleVariant vTrue((short)TRUE), vFalse((short)FALSE), vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CDocuments docxs;
CDocument0 docx;
CRange aRange;
docxs.ReleaseDispatch();
try
{
CoInitialize(NULL);
if(!wordApp.CreateDispatch(_T("Word.Application"),NULL))//创建一个新的word程序
{
AfxMessageBox(_T("无法启动Word服务器!"));
return NULL;
}
}
catch(...)
{
return NULL;
}

docxs=wordApp.get_Documents();
COleVariant vFileName(str_wordpath);
docx=docxs.Open(vFileName,vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);


CSelection sel = wordApp.get_Selection();
sel.WholeStory();
sel.Copy();
这里可以拷贝WORD到剪贴板,但页眉页脚没有一起拷贝进去
请教大家,如何把内容连同页眉页脚一起拷贝到剪贴板?????????? 先谢了!

...全文
207 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nslh520 2015-10-08
  • 打赏
  • 举报
回复
我可以单独得到页眉和页脚,用CSection,也可以单独得到内容Selection,但不知道怎么合在一起,最后转成图片(通过剪贴板,已经实现)
BeanJoy 2015-10-08
  • 打赏
  • 举报
回复
全选好像没有选中页眉、页脚,只有单独处理页眉页脚。 你可以打开WORD,自己全选试一试。 处理页眉、页脚,可以试试用书签,完了后把书签删了就是,像下面这样:

		bookmark = bookmarks.Item(COleVariant(_T("t1")));
		bookmark.Select();
		bookmark.Delete();
		wordSelection.TypeText(_T("新内容"));
nslh520 2015-10-08
  • 打赏
  • 举报
回复
没高手回复,自己顶下
BeanJoy 2015-10-08
  • 打赏
  • 举报
回复
引用 8 楼 nslh520 的回复:
[quote=引用 7 楼 BeanJoy 的回复:] [quote=引用 6 楼 nslh520 的回复:] [quote=引用 4 楼 BeanJoy 的回复:] 能不能单独转成两张图片,然后合并?
你的也是一个思路,我试试看,我用C#可以把页眉页脚和内容一起转成图片,但每次转的时候都要出现打开WORD文件界面,VC++又不能转出页眉页脚,纠结的很[/quote] C#不能像C++打开word那样设置visiable为false吗,或者设置了没效果? 或者换个思路试试行不行,C#的程序启动时不显示界面,再转时WORD文件界面是不是也会不显示了?[/quote] 可以设置 visiable=true,窗口就看不见了,但是只能转含有一页的WORD文件,多页的WORD文件就报错 [/quote] 我觉得这个问题,应该是代码问题,好好查查资料再调试下,应该能解决。
nslh520 2015-10-08
  • 打赏
  • 举报
回复
引用 7 楼 BeanJoy 的回复:
[quote=引用 6 楼 nslh520 的回复:] [quote=引用 4 楼 BeanJoy 的回复:] 能不能单独转成两张图片,然后合并?
你的也是一个思路,我试试看,我用C#可以把页眉页脚和内容一起转成图片,但每次转的时候都要出现打开WORD文件界面,VC++又不能转出页眉页脚,纠结的很[/quote] C#不能像C++打开word那样设置visiable为false吗,或者设置了没效果? 或者换个思路试试行不行,C#的程序启动时不显示界面,再转时WORD文件界面是不是也会不显示了?[/quote] 可以设置 visiable=true,窗口就看不见了,但是只能转含有一页的WORD文件,多页的WORD文件就报错 string startupPath="C:\\Users\\Administrator\\Desktop\\test"; string filename1 = "test3.docx"; ; var docPath = Path.Combine(startupPath, filename1); var app = new Microsoft.Office.Interop.Word.Application(); // MessageFilter.Register(); app.Visible = true; var doc = app.Documents.Open(docPath); doc.ShowGrammaticalErrors = false; doc.ShowRevisions = false; doc.ShowSpellingErrors = false; if (!Directory.Exists(startupPath + "\\" + filename1.Split('.')[0])) { Directory.CreateDirectory(startupPath + "\\" + filename1.Split('.')[0]); } //Opens the word document and fetch each page and converts to image foreach (Microsoft.Office.Interop.Word.Window window in doc.Windows) { foreach (Microsoft.Office.Interop.Word.Pane pane in window.Panes) { for (var i = 1; i <= pane.Pages.Count; i++) { var page = pane.Pages[i]; (如果把visibale=true,有多页的WORD文件,这里就报错,提示:集合所要求的成员不存在,如果设置visibale=false,多页文件不报错了,但会自动打开WORD软件界面,不想让WORD界面出现到桌面,想后台转换) var bits = page.EnhMetaFileBits; var target = Path.Combine(startupPath + "\\" + filename1.Split('.')[0], string.Format("{1}_page_{0}", i, filename1.Split('.')[0])); try { using (var ms = new MemoryStream((byte[])(bits))) { var image = System.Drawing.Image.FromStream(ms); var pngTarget = Path.ChangeExtension(target, "png"); image.Save(pngTarget, ImageFormat.Png); } } catch (System.Exception ex) { } } } } doc.Close(Type.Missing, Type.Missing, Type.Missing); app.Quit(Type.Missing, Type.Missing, Type.Missing); // MessageFilter.Revoke();
BeanJoy 2015-10-08
  • 打赏
  • 举报
回复
引用 6 楼 nslh520 的回复:
[quote=引用 4 楼 BeanJoy 的回复:] 能不能单独转成两张图片,然后合并?
你的也是一个思路,我试试看,我用C#可以把页眉页脚和内容一起转成图片,但每次转的时候都要出现打开WORD文件界面,VC++又不能转出页眉页脚,纠结的很[/quote] C#不能像C++打开word那样设置visiable为false吗,或者设置了没效果? 或者换个思路试试行不行,C#的程序启动时不显示界面,再转时WORD文件界面是不是也会不显示了?
nslh520 2015-10-08
  • 打赏
  • 举报
回复
引用 4 楼 BeanJoy 的回复:
能不能单独转成两张图片,然后合并?
你的也是一个思路,我试试看,我用C#可以把页眉页脚和内容一起转成图片,但每次转的时候都要出现打开WORD文件界面,VC++又不能转出页眉页脚,纠结的很
paschen 2015-10-08
  • 打赏
  • 举报
回复
就算不用程序,你在WORD里也不可能复制时把页眉页脚一起复制,需要单独处理
BeanJoy 2015-10-08
  • 打赏
  • 举报
回复
能不能单独转成两张图片,然后合并?

16,472

社区成员

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

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

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