VBA 替换 table 中的所有匹配项(Word)
VBA replacing all matches in the table (Word)
我在 Word 中有一个 table,在第 3 行我有“1. 文本”,我正在尝试删除该点。我知道不用vba也可以,我只是在练习一些简单的东西。
Sub Test()
Dim replacePattern As String
Dim RE As RegExp
Set RE = New RegExp
RE.Pattern = "(^[0-9]).(\s[A-Za-z\s]*)"
RE.Global = True
replacePattern = ""
Set Matches = RE.Execute(Selection.Text)
For Each Match In Matches
Selection.Text = RE.Replace(Selection.Text, replacePattern)
Next
End Sub
现在它只替换第一个选定单元格中的文本。我怎样才能正确地做到这一点?
这里棘手的部分是处理 table 单元格中的文本。
你现在这样做的方式会删除很多 table 信息,你最终会得到一个乱码文件。
如果你逐个细胞地做,会更容易:
For Each Table In ActiveDocument.Tables
For Each Cell In Table.Range.Cells
Set Matches = RE.Execute(Cell.Range.Text)
For Each Match In Matches
Cell.Range.Text = RE.Replace(Cell.Range.Text, replacePattern)
Next
Next
Next
我在 Word 中有一个 table,在第 3 行我有“1. 文本”,我正在尝试删除该点。我知道不用vba也可以,我只是在练习一些简单的东西。
Sub Test()
Dim replacePattern As String
Dim RE As RegExp
Set RE = New RegExp
RE.Pattern = "(^[0-9]).(\s[A-Za-z\s]*)"
RE.Global = True
replacePattern = ""
Set Matches = RE.Execute(Selection.Text)
For Each Match In Matches
Selection.Text = RE.Replace(Selection.Text, replacePattern)
Next
End Sub
现在它只替换第一个选定单元格中的文本。我怎样才能正确地做到这一点?
这里棘手的部分是处理 table 单元格中的文本。
你现在这样做的方式会删除很多 table 信息,你最终会得到一个乱码文件。
如果你逐个细胞地做,会更容易:
For Each Table In ActiveDocument.Tables
For Each Cell In Table.Range.Cells
Set Matches = RE.Execute(Cell.Range.Text)
For Each Match In Matches
Cell.Range.Text = RE.Replace(Cell.Range.Text, replacePattern)
Next
Next
Next