我正在研究一个可以找到文本模式并应用样式的宏。
文件内容:
Start-Style1Test HeadingEnd-Styles1Start-Style2 - 这是段落。End-Styles2
在这里,我的宏将搜索“Start-Style1 * End-Style1”并应用 style1。在我们的例子中,“测试标题”将应用 style1。同样,它也会对 style2 做同样的事情。如果我的标题和上下文在不同的行中,我的宏工作正常。
但如果是同一行。仅应用一种样式。在深入研究这个问题时,我发现这是由于两种样式的样式类型都是“段落”。
如果我将其更改为“字符”作为样式类型,我可以获得预期的输出。我想在不更改样式类型的情况下应用样式。如果可能的话,请告诉我。
这是我的代码:
Application.ScreenUpdating = False
Dim RngStory As Range
Dim StrStart
Dim StrEnd
Dim Styles
StrStart = Array("Start-Style1", "Start-Style2")
StrEnd = Array("End-Style1", "End-Style2")
Styles = Array("Style1", "Style1")
For i = 0 To 1
Set RngStory = ActiveDocument.Range
With RngStory.Find
.ClearFormatting
.Text = StrStart(i) & "*" & StrEnd(i)
.Forward = True
'.Wrap = wdFindStop
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
.Replacement.Text = ""
Do While .Execute
With RngStory.Duplicate
.Start = .Start + Len(StrStart(i))
.End = .End - Len(StrEnd(i))
.Style = ActiveDocument.Styles(Styles(i))
.End = .End - Len(StrEnd(i))
.Collapse (wdCollapseEnd)
End With
Loop
End With
Next