0

问题:我想知道如何创建一个循环来查找/选择一系列数据并应用字符样式。每个范围都可以通过开始和结束标记来识别。 例如: aCS1a 这些 aCS1a 和 zCS1z 标记之间的文本使用 Word 文档 zCS1z 中已经存在的名为 cs1 的字符样式进行格式化

到目前为止的过程: (1) 数据库导出带有“标签”的文本文件,这些标签用于识别段落样式和字符样式的格式。(2) Microsoft Word 中的宏以特定的段落样式格式化每个段落。

需要帮助: (3) 接下来我要选择 aCS1a 的每个实例。要格式化的文本在此处为 zCS1z,并将名称为“cs1”的字符样式应用于 aCS1a 和 zCS1z 标记之间的文本。

例如: 由 krusty 小丑学校的 aCS1a 院长 zCS1z、aCS2a 教授 Homer SimpsonzCS2z、aCS1aBSc(Hons)zCS1z aCS2aSpringfieldzCS2z、aCS1aPhDzCS1z aCS2aShelbyvillezCS2z 提出的候选人。

抱歉,我不得不将“标签”更改为 aCS1a 和 zCS1z,因为包围标签的尖括号在预览中被破坏了。

其中:cs1 = Microsoft Word 文档中的特定字符样式,cs2 = Microsoft Word 文档中的不同字符样式

宏中的循环可以删除 aCS1a zCS1z、aCS2a zCS2z “标签”,因为它们使用适当的字符样式格式化,或者我可以记录一个查找/替换宏以删除标签作为处理的最后一步。

4

1 回答 1

0

在 Stackflow 和其他网站(例如http://www.pcreview.co.uk/forums/word-select-text-search-delete-macro-t3868065.html )使用类似的问题/答案,我能够拼凑出很长的时间- 繁琐且繁琐的宏来解决问题。抱歉,尖括号在我的起始 cs1 和结束 /cs1 标签周围消失了。

Sub TaggedTextIsCS1()
'
'Find <cs1>text inbetween</cs1> and replace with Character Style CS1
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Style = ActiveDocument.Styles("CS1")
    With Selection.Find
        .Text = "\<cs1\>*\</cs1\>"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

    'Find <start> tag and remove
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Style = ActiveDocument.Styles("CS1")
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "<cs1>"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

    'Find <end> tag and remove
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Style = ActiveDocument.Styles("CS1")
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "</cs1>"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

End Sub
于 2013-08-20T11:40:40.753 回答