dsd999你好,能否帮忙解答一个word问题
需求:判断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次循环时候报错
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.EndOf6 //EndOf 本是2个参数,但是vba可以省去一个,不同c++
}