2

我正在研究一个可以找到文本模式并应用样式的宏。

文件内容:

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
4

2 回答 2

0

在同一行结合两种样式是我们在法律文件中经常做的事情。示例:标题 1 到标题 9 将链接到编号。此外,标题 2 样式可能需要使用我们称为“前导强调”(也称为“在标题中运行”)的格式进行设置。最后,段落的其余部分将由正文样式组成。为了实现这种格式,我们将使用 (1) 正文样式中的样式分隔符或 (2) 使用隐藏属性格式化的段落标记。下面是这种格式的一个例子:

                   Article I <--Heading 1 style

第 1.1 节介绍:第 1.1 节的编号是使用 Heading 2 样式实现的,但本段的剩余文本实际上是正文文本样式。

第 1.2 节更多文本:第 1.2 节的编号是通过标题 2 样式实现的,但本段的剩余文本实际上是正文文本样式。

                   Article II <--Heading 1 style

第 2.1 节引入强调:第 2.1 节的编号是通过标题 2 样式实现的,但该段落的剩余文本实际上是正文文本样式。

第 2.2 节更多文本:第 2.1 节的编号是通过标题 2 样式实现的,但本段的其余文本实际上是正文文本样式。

于 2013-10-20T01:16:37.693 回答
0

不幸的是,在同一行(实际上是一个段落或其中的一部分)中组合两种不同样式类型的唯一方法是使用一种character样式,但这不太可能是您想要的。

在 Word 文档中,您通常将段落样式用于文本的主要部分,例如标题,以及段落,然后在需要时在段落样式之上使用字符样式。例如,内置的 Word 字符样式用于脚注和页码。

您可以在此处阅读更多信息:http: //office.microsoft.com/en-us/word-help/understanding-paragraph-character-list-and-table-styles-HA001187614.aspx

你有理由想在同一条线上组合不同的风格吗?

于 2013-02-27T08:46:04.700 回答