【问题标题】:MS Word Macro - Find a Text pattern and apply stylesMS Word 宏 - 查找文本模式并应用样式
【发布时间】:2015-10-19 23:36:50
【问题描述】:

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

文档内容:

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

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

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

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

    您可以在这里阅读更多内容:http://office.microsoft.com/en-us/word-help/understanding-paragraph-character-list-and-table-styles-HA001187614.aspx

    你有理由想要在同一行中组合不同的样式吗?

    【讨论】:

      【解决方案2】:

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

                         Article I <--Heading 1 style
      

      Section 1.1 Intro:Section 1.1 的编号是通过 Heading 2 样式实现的,但该段落的剩余文本实际上是正文文本样式。

      Section 1.2 More Text:Section 1.2 的编号是通过 Heading 2 样式实现的,但该段落的剩余文本实际上是正文文本样式。

                         Article II <--Heading 1 style
      

      Section 2.1 Lead-In Emphasion:Section 2.1 的编号是通过 Heading 2 样式实现的,但该段落的其余文本实际上是正文文本样式。

      Section 2.2 More Text:Section 2.1 的编号是通过 Heading 2 样式实现的,但该段落的剩余文本实际上是正文文本样式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多