2013-02-26 44 views
2

我正在处理一个宏,它将查找文本模式并应用样式。MS Word宏 - 查找文本模式并应用样式

文档内容:

启动Style1Test HeadingEnd-Styles1Start - 蓝紫魅力 - 这是paragraph.End-Styles2

在这里,我的宏将搜索“启动STYLE1 *端值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

不幸的是,在同一行两种不同风格类型的(这实际上是一个段落或其部分)相结合的唯一方法是通过使用character风格,但它不是可能无论如何你想要的。

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

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

你有没有想不同的风格在同一行合并的一个原因?

0

在同一行上合并两种样式是我们经常在法律文档中执行的操作。例如:通过标题9的标题1将被链接到编号。另外,标题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样式实现的,但本段的其余文本实际上是正文文本样式。