当前位置: 代码迷 >> VBA >> dsd999你好,能否帮忙解答一个word有关问题
  详细解决方案

dsd999你好,能否帮忙解答一个word有关问题

热度:4025   发布时间:2013-02-26 00:00:00.0
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次循环时候报错



代码已经贴了。  估计你不懂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++的代码都发给我看看。
  相关解决方案