vba - 添加对使用带有编号的项目宏的正则表达式找到的数字或文本的交叉引用
问题描述
我必须从文档中找到格式或正则表达式的文本 -"([\(]){1}([0-9]){1, 2}([\)]){1}"
我想用对使用 word 宏找到的相应编号项目的交叉引用替换正则表达式中单独找到的数字。唯一的条件是它不应该采用带有样式的数字项目 - “Heading1”(它有一个数字项目)
例如:找到的文本:“(1)”仅在数字处用交叉引用替换文本
我使用的代码会引发运行时错误:“需要对象”。
Dim WorkPara As String
Dim CheckP() As Boolean
Dim NumPara As Integer, J As Integer
NumPara = ActiveDocument.Paragraphs.count
ReDim CheckP(NumPara)
For J = 1 To NumPara
CheckP(J) = False
WorkPara = ActiveDocument.Paragraphs(J).Range.Text
If InStr(WorkPara, regex.Pattern("([\(]){1}([0-9]){1}([\)]){1}")) > 0 Then
CheckP(J) = True
End If
Next J
For J = NumPara To 1 Step -1
If CheckP(J) Then
Selection.Range.InsertCrossReference wdRefTypeNumberedItem, wdNumberFullContext, "1"
End If
Next J
任何人都可以帮我解决它
解决方案
为此,您不需要 RegEx。考虑:
Sub Demo()
Application.ScreenUpdating = False
Dim Rng As Range
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "(^#)"
.Forward = True
.Format = False
.Wrap = wdFindStop
.MatchWildcards = False
.Execute
End With
Do While .Find.Found
If .Paragraphs(1).Style <> wdStyleHeading1 Then
Set Rng = .Characters(2)
With Rng
.InsertCrossReference wdRefTypeNumberedItem, wdNumberFullContext, .Text, True
End With
End If
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
Application.ScreenUpdating = True
End Sub
注意:上面的代码假设您的交叉引用是与找到的编号的标题。
如果您要处理的括号内的数字可能超过一位,您可以使用 Word 的通配符Find:
Sub Demo()
Application.ScreenUpdating = False
Dim Rng As Range
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "\([0-9]@\)"
.Forward = True
.Format = False
.Wrap = wdFindStop
.MatchWildcards = True
.Execute
End With
Do While .Find.Found
If .Paragraphs(1).Style <> wdStyleHeading1 Then
Set Rng = .Duplicate
With Rng
.Start = .Start + 1
.End = .End - 1
.InsertCrossReference wdRefTypeNumberedItem, wdNumberFullContext, .Text, True
End With
End If
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
Application.ScreenUpdating = True
End Sub
推荐阅读
- java - eclipse luna ant构建中的java项目失败但在eclipse neon中工作
- scala - 无法让评级工作
- vue.js - 在 Vuex 中使用 Framework7 $f7.router.navigate
- javascript - ngAfterCiewChecked clientHeight 不能使用换行符 - Angular 2 应用程序
- java - 垂直图像作为水平图像加载
- reactjs - 无法通过从外部 API 获取数据来更新状态
- python - 切片图像,进行一些处理并将切片组合成单个图像
- curl - 如何使用 Cygwin 将现有的 Curl 版本替换为更新的版本?
- reactjs - 未访问 React Navigation
- sql - 记录/文本不在 SQL 'IN' 子句中