我正在研究一个可以找到文本模式并应用样式的宏。
文件内容:
Start-Style1Test HeadingEnd-Styles1Start-Style2 - 这是paragraph.End-Styles2
在这里,我的宏将搜索“Start-Style1 * End-Style1”并应用style1。在我们的例子中,“测试标题”将应用style1。同样,它也会对style2做同样的事情。如果我的标题和上下文在不同的行中,我的宏工作正常。
但如果它是同一条线。只应用了一种样式。在深入研究这个问题时,我发现这是因为两种风格的Style类型都是'Paragraph'。
如果我将其更改为'Character'作为样式类型,我可以获得预期的输出。我想在不改变样式类型的情况下应用样式。如果有可能,请你告诉我。
这是我的代码:
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
答案 0 :(得分:0)
不幸的是,在同一行中组合两种不同样式类型(实际上是段落或其中的一部分)的唯一方法是使用character
样式,但它不太可能是您想要的。
在Word文档中,您通常将段落样式用于文本的主要部分,如标题,以及段落,然后在段落样式的顶部使用必要的字符样式。例如,内置的Word字符样式用于脚注和页码。
您可以在此处阅读更多内容:http://office.microsoft.com/en-us/word-help/understanding-paragraph-character-list-and-table-styles-HA001187614.aspx
你有理由想在同一条线上组合不同的风格吗?
答案 1 :(得分:0)
在同一条线上合并两种风格是我们在法律文件中经常做的事情。示例:标题1到标题9将与编号相关联。此外,Heading 2样式可能需要使用我们称为“引入强调”的格式(也称为“在标题中运行”)进行设置。最后,段落的其余部分将由正文文本样式组成。为了实现这种格式,我们将使用(1)正文文本样式中的样式分隔符或(2)使用隐藏属性格式化的段落标记。以下是此格式的示例:
Article I <--Heading 1 style
第1.1节简介:第1.1节的编号是使用标题2样式实现的,但本段的其余文本实际上是正文文本样式。
第1.2节更多文本:第1.2节的编号是使用标题2样式实现的,但本段的其余文本实际上是正文文本样式。
Article II <--Heading 1 style
第2.1节引入强调:第2.1节的编号是使用标题2样式实现的,但本段的其余文本实际上是正文文本样式。
第2.2节更多文本:第2.1节的编号是使用标题2样式实现的,但本段的其余文本实际上是正文文本样式。