|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
考试加油站 发表于 2014-9-19 10:57
非常感谢,基本解决问题,余下手工做一下。
我将录制的宏完整的改了一遍。
做成两个,一个是答案填到下划线上的,另一个是答案填到圆括号里的。
顺便将全角下划线“_”的两道题也做了。
只剩下以下几种情况没做:
1、备选答案前的字母未突出显示的,如第348、421题;
2、题中未留填答案处的,如第385、535题(这种情况,不敢用回车作为查找内容的开头,否则会大段文字被替换掉);
3、备选答案前的字母是自动编号的,如第401题;
4、备选答案前的字母是全角的,如第500、813、818、910题(这几道备选答案是全角字母的,做出来的答案也是错的)。
这几种情况只有手工处理一下了,办法很简单,由于前边的替换给备选答案字母前加了勾勾“√”,只要是没替换成功的,勾勾还在,所以手工查找一下勾勾“√”就能找到如上说的那几种情况。
还有两种情况是比较危险的:
1、上面说了,题中未留填答案处,即:既没有下划线“____”、也没有括号“( )”,但题后肯定有个回车对吧。可是不敢从“回车”查到勾勾,即“(^13)(*)√([A-Z]{1})”,因为文中到处都是回车,若这样替换的话,势必将大段文字替换掉。
2、题中填答案处为括号的,一般不会中间不加空格“()”,所以查找内容的起始字符串最好是括号后带个空格“( ”,我在宏代码中写成括号后带两个空格“( ”,这样安全点。否则,题目中很多地方也有括号,若不带空格查找替换,也势必将大段文字替换掉。加一个空格查找,错误机会就少一点;加两个空格查找,错误机会就更少了;如果空格加多了,恐怕填答案处就没这么多空格。不过,宁可找漏掉,也不要替换错了。
好了,下面是代码。
第一种情况,答案填到下划线上:
第二种情况,答案填到括号里:
(这里可以比第一种情况少替换一遍,不需要将答案加下划线)
- Sub 单选题答案填到括号里()
- ' 周星骋 编制
- '第1次替换
- Selection.Find.ClearFormatting '清除查找格式
- Selection.Find.Highlight = True '查找:突出显示
- Selection.Find.Replacement.ClearFormatting '清除替换格式
- With Selection.Find
- .Text = ""
- .Replacement.Text = "√^&" '替换为“√^&”
- .Forward = True
- .Wrap = wdFindContinue '搜索全部
- .Format = True
- .MatchCase = False '区分大小写:否
- .MatchWholeWord = False '全字匹配:否
- .MatchByte = False '区分全/半角:否
- .MatchWildcards = False '使用通配符:否
- .MatchSoundsLike = False '同音(英文):否
- .MatchAllWordForms = False '查找单词的所有形式(英文):否
- End With
- Selection.Find.Execute Replace:=wdReplaceAll '全部替换
- '第2次替换
- Selection.Find.ClearFormatting '清除查找格式
- Selection.Find.Replacement.ClearFormatting '清除替换格式
- With Selection.Find
- .Text = "(__)(_{1,})(*)√([A-Z]{1})" '查找内容“(__)(_{1,})(*)√([A-Z]{1})”
- .Replacement.Text = "(\4)\3\4" '替换为“(\4)\3\4”
- .Forward = True
- .Wrap = wdFindContinue '搜索全部
- .Format = False
- .MatchCase = False '区分大小写:否
- .MatchWholeWord = False '全字匹配:否
- .MatchByte = False '区分全/半角:否
- .MatchAllWordForms = False '查找单词的所有形式(英文):否
- .MatchSoundsLike = False '同音(英文):否
- .MatchWildcards = True '使用通配符:是
- End With
- Selection.Find.Execute Replace:=wdReplaceAll '全部替换
- '第3次替换
- Selection.Find.ClearFormatting '清除查找格式
- Selection.Find.Highlight = True '查找:突出显示
- Selection.Find.Replacement.ClearFormatting '清除替换格式
- Selection.Find.Replacement.Highlight = False '替换:非突出显示
- With Selection.Find
- .Text = ""
- .Replacement.Text = ""
- .Forward = True
- .Wrap = wdFindContinue
- .Format = True
- .MatchCase = False '区分大小写:否
- .MatchWholeWord = False '全字匹配:否
- .MatchByte = False '区分全/半角:否
- .MatchWildcards = False '使用通配符:否
- .MatchSoundsLike = False '同音(英文):否
- .MatchAllWordForms = False '查找单词的所有形式(英文):否
- End With
- Selection.Find.Execute Replace:=wdReplaceAll '全部替换
- '第4次替换
- Selection.Find.ClearFormatting '清除查找格式
- Selection.Find.Replacement.ClearFormatting '清除替换格式
- With Selection.Find
- .Text = "(( )(*))(*)√([A-Z]{1})" '查找内容“(( )(*))(*)√([A-Z]{1})”
- .Replacement.Text = "(\4)\3\4" '替换为“(\4)\3\4”
- .Forward = True
- .Wrap = wdFindContinue
- .Format = False
- .MatchCase = False '区分大小写:否
- .MatchWholeWord = False '全字匹配:否
- .MatchByte = False '区分全/半角:否
- .MatchAllWordForms = False '查找单词的所有形式(英文):否
- .MatchSoundsLike = False '同音(英文):否
- .MatchWildcards = True '使用通配符:是
- End With
- Selection.Find.Execute Replace:=wdReplaceAll '全部替换
- '第5次替换
- Selection.Find.ClearFormatting '清除查找格式
- Selection.Find.Replacement.ClearFormatting '清除替换格式
- With Selection.Find
- .Text = "(_)(_{1,})(*)√([A-Z]{1})" '查找内容“(_)(_{1,})(*)√([A-Z]{1})”
- .Replacement.Text = "(\4)\3\4" '替换为“(\4)\3\4”
- .Forward = True
- .Wrap = wdFindContinue
- .Format = False
- .MatchCase = False '区分大小写:否
- .MatchWholeWord = False '全字匹配:否
- .MatchByte = False '区分全/半角:否
- .MatchAllWordForms = False '查找单词的所有形式(英文):否
- .MatchSoundsLike = False '同音(英文):否
- .MatchWildcards = True '使用通配符:是
- End With
- Selection.Find.Execute Replace:=wdReplaceAll '全部替换
- End Sub
复制代码
|
|