问题:我想知道如何创建一个循环来查找/选择一系列数据并应用字符样式。每个范围都可以通过开始和结束标记识别。 例如:aCS1a这些aCS1a和zCS1z标签之间的文本使用名为cs1的字符样式进行格式化,该样式已存在于Word文档中zCS1z
到目前为止的流程: (1)数据库导出带有“标签”的文本文件,用于标识段落样式和字符样式的格式。 (2)Microsoft Word中的宏将每个段落格式化为特定的段落样式。
请提供帮助: (3)接下来我要选择aCS1a的每个实例。要格式化的文本转到herezCS1z并将名称为“cs1”的字符样式应用于aCS1a和zCS1z标记之间的文本。
例如: 候选人由Krusty Clown Schoolzz1z的aCS1aDean,aCS2a教授Homer SimpsonzCS2z,aCS1aBSc(荣誉)zCS1z aCS2aSpringfieldzCS2z,aCS1aPhDzCS1z aCS2aShelbyvillezCS2z提出。
抱歉,我必须将“标签”更改为aCS1a和zCS1z,因为包含标签的尖括号在预览中被破坏了。
其中: cs1 = Microsoft Word文档中的特定字符样式,cs2 = Microsoft Word文档中的不同字符样式
宏中的循环可以删除aCS1a zCS1z,aCS2a zCS2z“tags”,因为它们使用适当的字符样式进行格式化,或者我可以记录查找/替换宏以删除标记作为处理的最后一步。 / p>
答案 0 :(得分: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