求助:批量删除Word多页面中相同两词间文本的方法
嘿,针对你这种批量处理Word大量个人记录的需求,我给你两个实用的方法,看你更倾向哪种操作方式:
方法一:用Word自带查找替换(零代码,快速上手)
如果你不想碰代码,Word自带的通配符查找替换就能搞定,步骤很清晰:
- 打开目标Word文档,按下
Ctrl+H调出「查找和替换」对话框 - 点击右下角的「更多」按钮,勾选「使用通配符」选项
- 假设你要删除Section 2(Experience到Education之间的内容),在「查找内容」框里输入:
Experience*Education- 这里的
*是通配符,能匹配任意数量的字符(包括换行、分页符这类格式符)
- 这里的
- 在「替换为」框里输入:
Experience^pEducation(保留两个关键词,中间加个换行符让格式更整洁;如果不需要换行,直接输入ExperienceEducation就行) - 点击「全部替换」,Word会自动遍历所有页面完成批量删除
要是你需要删除Section 1(新页面人名到Experience之间的内容),只需把「查找内容」改成^12*Experience(^12代表分页符,因为每条记录从新页面开始),「替换为」改成Experience即可——这样会保留分页符和Experience,直接去掉前面的人名及内容。
方法二:VBA宏(适合超大量记录,灵活可控)
如果你的文档记录特别多,或者需要更精准的格式控制,写个简单的VBA宏是最优解:
- 打开Word文档,按下
Alt+F11打开VBA编辑器 - 右键点击左侧面板里的当前文档名称,选择「插入」→「模块」
- 粘贴下面的代码,根据你的需求注释/取消注释对应的删除逻辑:
Sub BatchDeleteTargetSections() Dim activeDoc As Document Dim searchRange As Range Set activeDoc = ActiveDocument ' 可选:删除Section1(分页符后人名至Experience的内容) With activeDoc.Content.Find .ClearFormatting .Text = "^12*Experience" ' ^12匹配分页符,*匹配任意中间内容 .Replacement.ClearFormatting .Replacement.Text = "^12Experience" ' 保留分页符和Experience .MatchWildcards = True .Execute Replace:=wdReplaceAll End With ' 可选:删除Section2(Experience至Education的内容) 'With activeDoc.Content.Find ' .ClearFormatting ' .Text = "Experience*Education" ' .Replacement.ClearFormatting ' .Replacement.Text = "Experience^pEducation" ' 保留关键词+换行 ' .MatchWildcards = True ' .Execute Replace:=wdReplaceAll 'End With End Sub
- 把文档保存为「启用宏的Word文档(.docm)」格式(不然宏无法保存)
- 回到Word主界面,按下
Alt+F8,选择BatchDeleteTargetSections宏,点击「运行」就完成了
重要提醒
- 操作前一定要备份原始文档!万一匹配规则不对,还能恢复
- 如果你的文档新页面不是用分页符,而是连续回车换行,把代码里的
^12改成^p^p(两个回车符)就行,根据实际格式调整
内容的提问来源于stack exchange,提问作者sgottsch




