要想将文章中所有的:
1.1.1.1 110kV#1主变 1.1.1.1.1 RPA_分隔
替换为
RPA_分隔
1.1.1.1 110kV#1主变 RPA_分隔 RPA_节点内容 500kV广南巡维中心【RPA_节点】220kV谷围站【RPA_节点】主变区域【RPA_节点】#1主变间隔 一次 RPA_节点内容 1.1.1.1.1 #RPA_分隔
可以使用VBA来进行操作。
- 保存一份源文档的副本。VBA的修改是难以撤销的。也可以先复制一部分出来到新文档进行试验。
-
打开 Word 文档。
-
按下 "Alt" + "F11" 打开 Visual Basic for Applications (VBA) 编辑器。
-
在 VBA 编辑器中,点击"插入(Insert)",然后选择"模块(Module)"。
- 添加对 Microsoft VBScript Regular Expressions 的引用。在 VBA 编辑器中,选择 "工具" 菜单,然后选择 "引用"。在弹出的对话框中找到并勾选 "Microsoft VBScript Regular Expressions",点击 "确定"。(重要!没有这一步可能运行正则表达式会出错)
-
在新建的模块中粘贴以下宏代码:
Function GetTextWithoutNumberPrefix(paragraphText As String) As String Dim regex As Object Set regex = CreateObject("VBScript.RegExp") ' 定义匹配模式,匹配目录层级数字(一般为 1.、2.、3.)和空格 regex.Pattern = "^\d+\.\s" ' 将匹配到的部分替换为空字符串 GetTextWithoutNumberPrefix = regex.Replace(paragraphText, "") End Function Function GetTextWithoutNumberPrefix1(paragraphText As String) As String Dim regex As Object Set regex = CreateObject("VBScript.RegExp") ' 定义匹配模式,匹配目录层级数字(一般为 1.、2.、3.)和空格 regex.Pattern = "^\d+\)\s" ' 将匹配到的部分替换为空字符串 GetTextWithoutNumberPrefix1 = regex.Replace(paragraphText, "") End Function Sub AddTextAfterHeadings() Dim rng As Range Set rng = ActiveDocument.Content For Each para In rng.Paragraphs If para.Style = "操作票样式4" Then With para.Range ' 段落前 para.Range.InsertBefore "RPA_分隔" & vbCr ' 获取新插入的段落行 Dim newParagraphRange As Range Set newParagraphRange = para.Range.Previous ' 将新插入的段落行的格式设置为与目标段落相同 newParagraphRange.Style = wdStyleNormal ' 设置新段落为正文格式 ' 段落后 para.Range.InsertAfter "RPA_节点内容" & vbCr ' 获取新插入的段落行 Set newParagraphRange = para.Range.Next ' 将新插入的段落行的格式设置为与目标段落相同 newParagraphRange.Style = wdStyleNormal ' 设置新段落为正文格式 para.Range.InsertAfter "一次" & vbCr ' 获取新插入的段落行 Set newParagraphRange = para.Range.Next ' 将新插入的段落行的格式设置为与目标段落相同 newParagraphRange.Style = wdStyleNormal ' 设置新段落为正文格式 para.Range.InsertAfter "500kV广南巡维中心【RPA_节点】220kV谷围站【RPA_节点】主变区域【RPA_节点】#1主变间隔" & vbCr ' 获取新插入的段落行 Set newParagraphRange = para.Range.Next ' 将新插入的段落行的格式设置为与目标段落相同 newParagraphRange.Style = wdStyleNormal ' 设置新段落为正文格式 para.Range.InsertAfter "RPA_节点内容" & vbCr ' 获取新插入的段落行 Set newParagraphRange = para.Range.Next ' 将新插入的段落行的格式设置为与目标段落相同 newParagraphRange.Style = wdStyleNormal ' 设置新段落为正文格式 para.Range.InsertAfter "RPA_分隔" & vbCr ' 获取新插入的段落行 Set newParagraphRange = para.Range.Next ' 将新插入的段落行的格式设置为与目标段落相同 newParagraphRange.Style = wdStyleNormal ' 设置新段落为正文格式 End With End If If para.Style = "操作票样式5" Then para.Range.InsertBefore "#" End If Next para End Sub
-
关闭 VBA 编辑器。
-
运行宏:按下 "Alt" + "F8" 打开宏对话框,在列表中选择 "AddTextAfterHeadings" 宏,然后点击 "运行(Run)" 按钮。
RPA_分隔
标签:段落,VBA,para,newParagraphRange,标题,RPA,插入,Range From: https://www.cnblogs.com/nntzhc/p/17501418.html