万万哇 发表于 2024-10-9 22:42:34

WPS的JS宏实现某类标题批量改变级别

批量标题上移

例如,Word文档中,有“业务场景”这个标题,需要对文档中所有的包含“业务场景”的标题级别进行团体上移一个层级,即:原来的标题2,提升为标题1;原标题3提升为标题2;以此类推。每个“业务场景”所处的标题层级不固定,大概是2,3,4,5,6,7,8,9级均存在大概性。
下面的JS代码实现了文档中批量查找“业务场景”,并提升相应标题级别的功能。
function TitleUp()
{//批量标题上移
        findStr = "业务场景";
        while(1)
        {
                ActiveWindow.Selection.Find.Forward = true;
                ActiveWindow.Selection.Find.Text = findStr;               
                ActiveWindow.Selection.Find.Wrap = wdFindAsk;
       
                let re = ActiveWindow.Selection.Find.Execute(findStr, undefined, undefined, undefined, undefined, undefined, undefined,
                        undefined, undefined, undefined, wdReplaceNone, undefined, undefined, undefined, undefined);
                if(re == false)return;                               
                outL = ActiveWindow.Selection.ParagraphFormat.OutlineLevel;               
                switch(outL){
                        case wdOutlineLevel2:ActiveWindow.Selection.Style = "标题 1";break;
                        case wdOutlineLevel3:ActiveWindow.Selection.Style = "标题 2";break;
                        case wdOutlineLevel4:ActiveWindow.Selection.Style = "标题 3";break;
                        case wdOutlineLevel5:ActiveWindow.Selection.Style = "标题 4";break;
                        case wdOutlineLevel6:ActiveWindow.Selection.Style = "标题 5";break;
                        case wdOutlineLevel7:ActiveWindow.Selection.Style = "标题 6";break;
                        case wdOutlineLevel8:ActiveWindow.Selection.Style = "标题 7";break;
                        case wdOutlineLevel9:ActiveWindow.Selection.Style = "标题 8";break;
                        default: break;
                }                                               
       
        }

} 另外也可以简化成如下代码:
function TitleUP()
{//包含特定字符串的标题,批量向上提级一层。
        findStr = "场景XXX";
        while(1)
        {
                ActiveWindow.Selection.Find.Forward = true;
                ActiveWindow.Selection.Find.Text = findStr;               
                ActiveWindow.Selection.Find.Wrap = wdFindAsk;
       
                let re = ActiveWindow.Selection.Find.Execute(findStr, undefined, undefined, undefined, undefined, undefined, undefined,
                        undefined, undefined, undefined, wdReplaceNone, undefined, undefined, undefined, undefined);
                if(re == false)return;
               
                //大纲层级
                outL = ActiveWindow.Selection.ParagraphFormat.OutlineLevel;               
               
                if(outL> wdOutlineLevel1 &&outL < wdOutlineLevelBodyText)
                {//标题向上提一层
                        ActiveWindow.Selection.Style = -outL;
                }
        }

} WdOutlineLevel 枚举

指定要应用于段落的大纲级别。
名称值阐明wdOutlineLevel11大纲级别 1。wdOutlineLevel22大纲级别 2。wdOutlineLevel33大纲级别 3。wdOutlineLevel44大纲级别 4。wdOutlineLevel55大纲级别 5。wdOutlineLevel66大纲级别 6。wdOutlineLevel77大纲级别 7。wdOutlineLevel88大纲级别 8。wdOutlineLevel99大纲级别 9。wdOutlineLevelBodyText10没有大纲级别。 WdBuiltinStyle 枚举

指定内置的 WPS 样式。
wdStyleHeading1-2标题 1。wdStyleHeading2-3标题 2。wdStyleHeading3-4标题 3。wdStyleHeading4-5标题 4。wdStyleHeading5-6标题 5。wdStyleHeading6-7标题 6。wdStyleHeading7-8标题 7。wdStyleHeading8-9标题 8。wdStyleHeading9-10标题 9。  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: WPS的JS宏实现某类标题批量改变级别