WPS的JS宏实现删除某级标题下的所有内容

想要删除Word文档中,包含特定描述的标题下所有内容(包含各级子标题以及正文描述)。

例如下图中,想删除1.2.1.19.1业务场景下所有内容:

简单版:

删除光标停留位置的大纲级别下所有的内容。实现的JS代码如下:

ActiveWindow.ActivePane.View.Type = wdOutlineView;
		
if(Selection.ParagraphFormat.OutlineLevel != wdStyleNormal)
{//删除本大纲级别下的所有内容
		     ActiveWindow.ActivePane.View.ShowHeading(Selection.ParagraphFormat.OutlineLevel);				
		Selection.Paragraphs.Item(1).Range.Select();
		Selection.Delete(wdCharacter,1);
}	
	ActiveWindow.ActivePane.View.Type = wdNormalView;

其中,指定视图类型WdViewType 枚举类型说明如下:

名称说明
wdMasterView5主控视图。
wdNormalView1普通视图。
wdOutlineView2大纲视图。
wdPrintPreview4打印预览视图。
wdPrintView3页面视图。
wdReadingView7阅读视图。
wdWebView6Web 视图。

进阶版:

查找指定的文本,文本如果为标题,则删除该标题下所有的子标题和文本内容。实现的JS代码参考如下:

function 删除标题内容()
{
	findStr = "业务场景";
	ActiveWindow.ActivePane.View.Type = wdOutlineView;
	
	while(1)
	{
		Selection.Find.Forward = true; 
		Selection.Find.Text = findStr;
		
		Selection.Find.Wrap = wdFindAsk;
		ActiveWindow.ActivePane.View.ShowAllHeadings();
		let re = Selection.Find.Execute(findStr, undefined, undefined, undefined, undefined, undefined, undefined, 
			undefined, undefined, undefined, wdReplaceNone, undefined, undefined, undefined, undefined);
		if(re == false)
		{
			Selection.HomeKey(wdStory,wdMove);	
			ActiveWindow.ActivePane.View.Type = wdNormalView;
			MsgBox("无法找到您查找的内容:"+findStr,jsOKOnly,"提示");
			return;
		}	
		else{			
			if(Selection.ParagraphFormat.OutlineLevel != wdStyleNormal)
			{//删除本大纲级别下的所有内容
				ActiveWindow.ActivePane.View.ShowHeading(Selection.ParagraphFormat.OutlineLevel);				
				Selection.Paragraphs.Item(1).Range.Select();
				Selection.Delete(wdCharacter,1);
			}	
		}		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红狐九尾

你的鼓励是我持续创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值