选择特定数量的字符
Selecting a specific number of characters
我有一些包含大量文本的 .doc 文件,我想每 217 个字符更改一次文本的颜色。前 217 个字符(包括空格)为一种颜色,接下来的 217 个字符为另一种颜色,依此类推。
但是,我还想创建一个条件:如果 217 个字符不以句点结尾,则选择必须减少到 217 之前的最后一个句点。
例如:“这辆车是蓝色的。我们要去”。在这种情况下,不会选择句子:“We need to go to the”,因为它没有以句点结尾,所以选择的是“the car is blue.”,因为它确实以句点结尾.
我不知道如何在 Word 中执行此操作,我是 VBA 的新手,我不知道是否可行,因为我已经习惯了 Excel。有人可以帮助我吗?
此代码将根据您的规则交替突出显示黄色和绿色。它可能不完美,但可以帮助您入门。
Public Sub HighlightText()
Dim lStart As Long, lEnd As Long
Dim r As Range
Dim lColor As Long
lStart = 0
lEnd = 217
lColor = wdBrightGreen
Set r = ThisDocument.Range(lStart, lEnd)
Do Until lEnd > ThisDocument.Range.Characters.Count
'find the last period
r.Find.Execute FindText:=".", Forward:=False
'if found, record where it is
If r.Find.Found Then
lEnd = r.End
Else
Exit Do
End If
'highlight the range
ThisDocument.Range(lStart, lEnd).HighlightColorIndex = lColor
'set up for the next section
lStart = lEnd
lEnd = lEnd + 217
'if you're not at the end, reset r
If lEnd <= ThisDocument.Range.Characters.Count Then
Set r = ThisDocument.Range(lStart, lEnd)
End If
'alternate colors
If lColor = wdBrightGreen Then lColor = wdYellow Else lColor = wdBrightGreen
Loop
ThisDocument.Range(lStart, ThisDocument.Range.Characters.Count).HighlightColorIndex = lColor
End Sub
我有一些包含大量文本的 .doc 文件,我想每 217 个字符更改一次文本的颜色。前 217 个字符(包括空格)为一种颜色,接下来的 217 个字符为另一种颜色,依此类推。
但是,我还想创建一个条件:如果 217 个字符不以句点结尾,则选择必须减少到 217 之前的最后一个句点。
例如:“这辆车是蓝色的。我们要去”。在这种情况下,不会选择句子:“We need to go to the”,因为它没有以句点结尾,所以选择的是“the car is blue.”,因为它确实以句点结尾.
我不知道如何在 Word 中执行此操作,我是 VBA 的新手,我不知道是否可行,因为我已经习惯了 Excel。有人可以帮助我吗?
此代码将根据您的规则交替突出显示黄色和绿色。它可能不完美,但可以帮助您入门。
Public Sub HighlightText()
Dim lStart As Long, lEnd As Long
Dim r As Range
Dim lColor As Long
lStart = 0
lEnd = 217
lColor = wdBrightGreen
Set r = ThisDocument.Range(lStart, lEnd)
Do Until lEnd > ThisDocument.Range.Characters.Count
'find the last period
r.Find.Execute FindText:=".", Forward:=False
'if found, record where it is
If r.Find.Found Then
lEnd = r.End
Else
Exit Do
End If
'highlight the range
ThisDocument.Range(lStart, lEnd).HighlightColorIndex = lColor
'set up for the next section
lStart = lEnd
lEnd = lEnd + 217
'if you're not at the end, reset r
If lEnd <= ThisDocument.Range.Characters.Count Then
Set r = ThisDocument.Range(lStart, lEnd)
End If
'alternate colors
If lColor = wdBrightGreen Then lColor = wdYellow Else lColor = wdBrightGreen
Loop
ThisDocument.Range(lStart, ThisDocument.Range.Characters.Count).HighlightColorIndex = lColor
End Sub