首页 文章

Microsoft Word宏:循环选择文本范围并应用现有的字符样式

提问于
浏览
0

QUESTION: I would like to know how to create a loop to find/select a range of data and apply a character style. Each range is identifiable by a start and end tag. 例如:aCS1a这些aCS1a和zCS1z标签之间的文本格式化为Word文档中存在的名为cs1的字符样式zCS1z

The process so far: (1)数据库导出带有"tags"的文本文件,用于标识段落样式和字符样式的格式 . (2)Microsoft Word中的宏使用特定的段落样式格式化每个段落 .

Help required please: (3)接下来我要选择aCS1a的每个实例 . 要格式化的文本转到herezCS1z,并将名称为"cs1"的字符样式应用于aCS1a和zCS1z标记之间的文本 .

For example: 候选人由Krusty Clown Schoolzz1z的aCS1aDean,aCS2a教授Homer SimpsonzCS2z,aCS1aBSc(Hons)zCS1z aCS2aSpringfieldzCS2z,aCS1aPhDzCS1z aCS2aShelbyvillezCS2z提出 .

抱歉,我必须将“标签”更改为aCS1a和zCS1z,因为包含标签的尖括号在预览中被破坏了 .

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

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

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
    

相关问题