2013-02-26 46 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樣式實現的,但本段的其餘文本實際上是正文文本樣式。