办公神器|杂乱内容一键规范排版 WPS 宏编辑
日常办公中,我们经常从网页、文档、网页资讯里复制文字粘贴到 WPS 文字,总会遇到多余空行、乱码软回车、格式错乱、标题间距过大、表格排版不统一、图片变形等问题。

反复手动调整格式耗时又费力,今天给大家分享一套定制化 WPS JS 宏脚本,一键完成全文档深度排版,适配工程、公文、资料整理等场景,功能全面、设置固定,拿来就能用。
一、宏脚本核心功能介绍
本套宏专为网页抓取内容、资料汇编、工程文档定制,所有格式参数已固化,运行后自动完成以下操作:
清理冗余内容:自动删除超链接、软回车、自动编号、隐形空白字符、连续空行;
全局段落格式:全文所有段落段前 0 磅、段后 0 磅,统一固定行距 23 磅,彻底解决标题下方大片空白、分页错乱问题;
标题排版规则:仅文档第一个大标题居中,其余分级标题(一)(二)等左对齐,标题与正文字号、字体完全统一;
正文排版规则:宋体 14 号、两端对齐、首行缩进 2 字符,符合公文阅读规范;
表格统一排版:自动适配页面横竖版、表格边框完整、单元格居中、五号宋体、固定行距 15 磅;
图片智能优化:自动等比例缩放、页面居中、前后补换行,避免图片挤压变形;
防分页错乱:关闭孤行控制、段前分页、与下段同页等功能,杜绝标题单独留在页面顶部、下方大片留白。
二、完整宏代码(直接复制使用)
javascript
运行
/**
* WPS JS宏:网页内容一键深度排版(办公定制完整版)
* 适配:网页复制内容、工程资料、公文汇编
* 规则:段前段后0磅/行距23磅、仅首标题居中、其余标题靠左、表格图片统一格式
*/
function WebContentFormatter() {
let doc = ActiveDocument;
// 1. 清理网页超链接、软回车、自动编号
console.log(“正在初步清理干扰项…”);
while (doc.Hyperlinks.Count > 0) {
doc.Hyperlinks.Item(1).Delete();
}
let findCr = doc.Range(0, 0).Find;
findCr.ClearFormatting();
findCr.Text = “^l”;
findCr.Replacement.Text = “^p”;
findCr.Execute(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 2);
doc.Range().ListFormat.RemoveNumbers();
// 2. 深度清理空行、隐形空白符
console.log(“正在执行深度空行清理…”);
for (let i = doc.Paragraphs.Count; i >= 1; i–) {
let p = doc.Paragraphs.Item(i);
let range = p.Range;
let textContent = range.Text.replace(/[\r\n\t\s \u00A0\u200B\uFEFF\u3000]/g, “”);
if (textContent === “” && range.InlineShapes.Count === 0 && range.Tables.Count === 0) {
try { range.Delete(); } catch(e) {}
}
}
// 清除连续空行
let findDoubleP = doc.Range(0, 0).Find;
findDoubleP.ClearFormatting();
findDoubleP.Replacement.Text = “^p”;
findDoubleP.Text = “^p^p”;
while (findDoubleP.Execute(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 2)) {}
// 3. 表格统一格式化
console.log(“正在优化表格…”);
for (let i = 1; i <= doc.Tables.Count; i++) {
let tbl = doc.Tables.Item(i);
if (tbl.Columns.Count > 6) {
tbl.Range.Sections.Item(1).PageSetup.Orientation = wdOrientLandscape;
} else {
tbl.Range.Sections.Item(1).PageSetup.Orientation = wdOrientPortrait;
}
tbl.AutoFitBehavior(wdAutoFitWindow);
tbl.Rows.Alignment = wdAlignRowCenter;
tbl.Spacing = 0;
tbl.Borders.Enable = true;
let tblRange = tbl.Range;
tblRange.Cells.VerticalAlignment = wdCellAlignVerticalCenter;
tblRange.Font.Name = “宋体”;
tblRange.Font.Size = 10.5;
let tblPF = tblRange.ParagraphFormat;
tblPF.Alignment = wdAlignParagraphLeft;
tblPF.SpaceBefore = 0;
tblPF.SpaceAfter = 0;
tblPF.SpaceBeforeAuto = false;
tblPF.SpaceAfterAuto = false;
tblPF.LineSpacingRule = wdLineSpaceExactly;
tblPF.LineSpacing = 15;
tbl.Rows.Item(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter;
let tFind = tblRange.Find;
tFind.ClearFormatting();
tFind.Replacement.ClearFormatting();
tFind.MatchWildcards = true;
tFind.Text = “[ \u00A0]{1,}”;
tFind.Replacement.Text = “”;
tFind.Execute(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 2);
}
// 4. 图片智能排版与缩放
console.log(“正在优化图片尺寸…”);
let shapeCount = doc.InlineShapes.Count;
for (let i = shapeCount; i >= 1; i–) {
let shape = doc.InlineShapes.Item(i);
let sectionSetup = shape.Range.Sections.Item(1).PageSetup;
let availWidth = sectionSetup.PageWidth – sectionSetup.LeftMargin – sectionSetup.RightMargin;
let availHeight = sectionSetup.PageHeight – sectionSetup.TopMargin – sectionSetup.BottomMargin – 50;
let picPara = shape.Range.ParagraphFormat;
picPara.Alignment = wdAlignParagraphCenter;
picPara.CharacterUnitFirstLineIndent = 0;
picPara.LineSpacingRule = wdLineSpaceSingle;
picPara.SpaceBefore = 0;
picPara.SpaceAfter = 0;
picPara.SpaceBeforeAuto = false;
picPara.SpaceAfterAuto = false;
shape.LockAspectRatio = -1;
shape.Width = availWidth * 0.8;
if (shape.Height > availHeight) {
shape.Height = availHeight;
}
let rng = shape.Range;
if (rng.End < doc.Range().End && doc.Range(rng.End, rng.End + 1).Text !== “\r”) {
doc.Range(rng.End, rng.End).InsertAfter(“\n”);
}
if (rng.Start > 0 && doc.Range(rng.Start – 1, rng.Start).Text !== “\r”) {
doc.Range(rng.Start, rng.Start).InsertBefore(“\n”);
}
}
// 5. 正文、标题全局格式设置(核心)
console.log(“正在排版正文及标题…”);
for (let i = 1; i <= doc.Paragraphs.Count; i++) {
let para = doc.Paragraphs.Item(i);
let range = para.Range;
if (range.Tables.Count > 0 || range.InlineShapes.Count > 0) continue;
// 清理序号后多余空格
let findObj = range.Find;
findObj.ClearFormatting();
findObj.MatchWildcards = true;
findObj.Text = “([0-9一二三四五六七八九十]{1,3}[.、.\)])[ ]{1,}”;
findObj.Replacement.Text = “\\1”;
findObj.Execute(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 2);
let pf = para.Format;
// 固定段前段后为0,行距23磅
pf.SpaceBeforeAuto = false;
pf.SpaceAfterAuto = false;
pf.SpaceBefore = 0;
pf.SpaceAfter = 0;
pf.LineSpacingRule = wdLineSpaceExactly;
pf.LineSpacing = 23;
pf.LeftIndent = 0;
pf.RightIndent = 0;
pf.FarEastLineBreakControl = true;
range.Font.ColorIndex = wdAuto;
// 关闭分页相关,杜绝空白大间距
pf.KeepTogether = false;
pf.KeepWithNext = false;
pf.PageBreakBefore = false;
pf.WidowControl = false;
// 区分大标题、分级标题、正文
let text = range.Text.trim();
if (i === 1) {
// 首个大标题:居中、黑体16号
range.Font.Name = “黑体”;
range.Font.Size = 16;
pf.Alignment = wdAlignParagraphCenter;
pf.CharacterUnitFirstLineIndent = 0;
} else if (text.match(/^([一二三四五六七八九十]+)/)) {
// (一)(二)分级标题:靠左、宋体14号、无缩进
range.Font.Name = “宋体”;
range.Font.Size = 14;
pf.Alignment = wdAlignParagraphLeft;
pf.CharacterUnitFirstLineIndent = 0;
} else {
// 正文:两端对齐、首行缩进2字符
range.Font.Name = “宋体”;
range.Font.Size = 14;
pf.Alignment = wdAlignParagraphJustify;
pf.CharacterUnitFirstLineIndent = 2;
}
}
// 全局兜底:二次强制统一格式
console.log(“格式最终校验…”);
for (let i = 1; i <= doc.Paragraphs.Count; i++) {
let pf = doc.Paragraphs.Item(i).Format;
pf.SpaceBeforeAuto = false;
pf.SpaceAfterAuto = false;
pf.SpaceBefore = 0;
pf.SpaceAfter = 0;
pf.KeepTogether = false;
pf.KeepWithNext = false;
pf.PageBreakBefore = false;
pf.WidowControl = false;
}
alert(“排版完成!\n1. 全文段前段后0磅,行距统一23磅\n2. 仅首标题居中,其余标题靠左\n3. 空行、表格、图片全部优化完毕”);
}
三、WPS 宏安装 & 使用步骤(图文式讲解,公众号友好)
第一步:打开 WPS 文字,启用开发工具
打开需要排版的 Word/WPS 文档;
点击顶部菜单栏 开发工具(如未显示,点击「视图」→ 勾选「开发工具」)。
第二步:新建 JS 宏文件
在开发工具栏目中,点击 宏;
在弹出窗口中,点击 新建,文件类型选择 JS 宏;
删除编辑器内默认的空白代码。
第三步:粘贴代码并保存
复制上文完整的宏代码,粘贴到代码编辑窗口;
Ctrl+S 保存,自定义宏名称(例如:网页一键排版),关闭编辑器。
第四步:运行宏完成排版
回到文档界面,再次点击「开发工具」→「宏」;
选中刚才保存的宏名称,点击 运行;
等待几秒,弹出 “排版完成” 提示框即操作结束。
四、常见问题解答
1. 运行后标题下方仍有大片空白?
该问题是分页设置导致,宏已自动关闭相关选项;若仍异常:选中段落 → 右键【段落】→【换行和分页】,取消所有勾选即可。
2. 宏按钮是灰色无法使用?
WPS 默认限制宏功能,需进入 WPS 设置 → 信任中心 → 宏设置,启用所有宏(仅在自用办公设备开启)。
3. 格式参数可以自行修改吗?
可以。代码内可直接修改:字号、行距、缩进、对齐方式、字体等参数,按需微调即可。
五、适用场景总结
✅ 网页复制新闻、资料、科普文案快速排版
✅ 工程资料、公文、汇报材料统一格式
✅ 带表格、图片的混合文档批量规整
✅ 长期固定格式办公,告别重复手动调格式
一套宏搞定全文档排版,大幅提升办公效率,推荐大家收藏使用!
夜雨聆风