当前位置: 首页 > 知识库问答 >
问题:

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

尉迟龙光
2023-03-14

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

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

需要帮助请:(3)接下来我想选择aCS1a的每个实例要格式化的文本到这里zCS1z和应用字符样式名称cs1之间的aCS1a和zCS1z标签的文本。

例如:克鲁斯蒂小丑学校的aCS1aDean、aCS2aHomer SimpsonzCS2z、aCS1aBSc(荣誉)zCS1z aCS2aSpringfield dzCS2z、aCS1aPhDzCS1z aCS2aShelbyvillezCS2z提出的候选人。

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

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

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

共有1个答案

邴宏大
2023-03-14

在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
 类似资料:
  • 问题内容: 如何选择以“ A”开头的名称直到以“ D”开头的名称的行?并按字母顺序对它们进行排序?就像和的组合? 样品表: 样本输出: 名称以“ Cr”开头,直到名称以“ D”开头 样本输出: 问题答案: 从最多选择名称,但不包括: 由于这是一个简单的比较,因此如果该字段有一个索引,则可以使用索引。

  • 范围选择器(rangeSelector)是图表中用于选择数据范围的工具,它提供了预配置的时间选择按钮,包括 1天,1周,1个月等,同时也提供时间输入框用于手动指定时间范围。 时间选择按钮 通过 rangeSelector.buttons 可以指定时间选择按钮,默认是 buttons: [{ type: 'month', count: 1, text: '1m' }, {

  • 我按照问题中的建议如何避免在Excel VBA宏中使用Select,但仍然得到“应用程序定义的或对象定义的错误”。 这是我的最后一个版本: 这是否与范围中变量(Counter1、Counter2)的使用有关?

  • 问题内容: 我在iPhone上的UIWebView中将一些简单样式的文本显示为html。它基本上是一系列段落,偶尔带有强或强调的短语。在运行时,我需要将样式应用于文本范围。 有几种类似的情况,其中一种是突出显示搜索结果。如果用户搜索了“某物”,我想更改单词出现后的背景颜色,然后再恢复原始背景。 是否可以使用javascript将样式应用于文本范围?其中一个关键部分是能够取消设置样式。 似乎有两种可

  • 问题内容: 是否可以为查询的IN部分定义一个范围,像这样 代替 问题答案: 您不能,但可以使用 请注意,这是包含性内容,并且将包含ID为10和15的项。 如果不想包含,则必须退回到使用and 运算符。

  • 例:“at”和“tack”应该返回true,“tree”和“ere”应该返回false。 在查看注释后编辑,我的新代码现在是这样的。它总是返回false,即使带有“tree”和“tree”。