需求:判断word有几页? 比如有4页,那么循环4次,每次拷贝一页,然后将拷贝的内容直接 插入到一个新页面中,所谓“新页面”即一个空白的word 页面。 新页面的 代码没有提供。
编程语言:c++
错误原因分析:能力不够,不能理解word的结构导致的
选中一页的思路: 比如,我想调到第2页,然后选中第2页的所有内容。 那我们先跳转到第3页,记录位置,
回跳到第2页, 至于为什么要这么做,我也不知道。vba群说的.
//获取总页数
VARIANT nTotalPages=objSelect.get_Information(wdNumberOfPagesInDocument);
long pose=0; // 记录位置
for(int nPage=1; nPage<=nTotalPages.iVal; nPage++)
{
objSelect = objWordApp.get_Selection();
COleVariant ovWhat((long)wdGoToPage);
COleVariant ovWhich((long)wdGoToNext);
COleVariant ovCount((long)1);
COleVariant ovName((long)nPage+1);
if(nPage<nTotalPages.iVal)
{
// 定位到第nPage+1页
objSelect.GoTo(ovWhat, ovWhich, ovCount, ovName);
pose=objSelect.get_End(); //记录位置
//回跳
ovWhich=(long)wdGoToAbsolute;
ovName=(long)nPage;
objSelect.GoTo(ovWhat,ovWhich, ovCount, ovName);
objSelect.put_End(pose);
}
else
{
COleVariant ovUnit((long)6);
COleVariant ovExtend((long)wdMove);
objSelect.GoTo(ovWhat, ovWhich, ovCount,ovName);
objSelect.EndOf(ovUnit,ovExtend);
}
objSelect.Copy(); //一共有4页,第2次循环时候报错
代码已经贴了。 估计你不懂c++,所以我贴一个vba的版本,这个版本并不是完整的,但我不懂,所以没法子,你将就理解。
if( nPage<election.Information(wdNumberOfPagesInDocument))
{
Selection.GoTo(1,2,1 ,); //1,2,1,nPage+1
pose=Selection.End //记录位置,保存pose
//回跳
Selection.GoTo wdGoToPage, wdtogoabsolute, 1,nPage
Selection.End=pose
}
eles
{
Selection.GoTo wdGoToPage, wdtogoabsolute, 1,nPage
Selection.EndOf 6 //EndOf 本是2个参数,但是vba可以省去一个,不同c++
}
你能否写一个带参数的过程,无参数过程,可以做一个循环,
没选中一页,然后selection.copy。
注明:
Application 对象 即c++ 代码中的objWordApp
Selection对象即objSelect
Information即c++ 中对应的 objSelect.get_Information(wdNumberOfPagesInDocument);
------解决方案--------------------------------------------------------
把C++的代码都发给我看看。