ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7761|回复: 17

[求助] word试卷试题与答案分开

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-8-28 13:19 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请问大侠:如何利用这张试卷(如试卷样本(前)样式),将试卷的试题与答案按照题号分别显示在同一个文档中(如试卷样本(后)显示那样),该如何操作才能实现啊?求详细解答,谢谢先!【查找和替换,还是VBA或其他方法】

试卷样本.zip

41.07 KB, 下载次数: 243

TA的精华主题

TA的得分主题

发表于 2016-8-28 18:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 duquancai 于 2016-8-29 00:24 编辑
  1. Private Sub CommandButton1_Click()
  2.         Dim S$, mt, mh, Orng As Range, trng As Range
  3.         Dim Arg As Range, m%, i%, j%
  4.         Set Arg = ActiveDocument.Content
  5.         Selection.EndKey wdStory
  6.         Selection.Text = Chr(13) & "--------------中考数学答案--------------" & Chr(13)
  7.         Selection.Collapse wdCollapseEnd
  8.         With CreateObject("VBScript.Regexp")
  9.             .Global = True: .MultiLine = True
  10.             .Pattern = "^([一二三四]+、[^\r]+\r)(?:(?!^[一二三四]+、[^\r]+\r).)+"
  11.             For Each mt In .Execute(Arg)
  12.                 S = mt.submatches(0)
  13.                 Selection.Text = S
  14.                 Selection.Collapse wdCollapseEnd
  15.                 i = mt.FirstIndex: j = mt.Length
  16.                 Set Orng = ActiveDocument.Range(i, i + j)
  17.                 .Pattern = "^【分析】.+?【答案】(?:(?!^【点评】).)+"
  18.                 For Each mh In .Execute(Orng)
  19.                     m = m + 1
  20.                     i = mh.FirstIndex: j = mh.Length
  21.                     Set trng = ActiveDocument.Range(Orng.Start + i, Orng.Start + i + j)
  22.                     trng.Copy
  23.                     Selection.Text = m & "."
  24.                     Selection.Collapse wdCollapseEnd
  25.                     Selection.Paste
  26.                 Next
  27.             Next
  28.         End With
  29.         With ActiveDocument.Content.Find
  30.             .Text = "【考点】*【分析】*【解答】*【答案】*【点评】[!^13]@^13"
  31.             .Execute
  32.             .Replacement.Text = ""
  33.             .MatchWildcards = True
  34.             .Execute Replace:=wdReplaceAll
  35.         End With
  36.     End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2016-8-29 00:20 | 显示全部楼层
请下载附件,打开Word文档,点击按钮,OK!

试卷样本(前).rar

42.79 KB, 下载次数: 347

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-8-29 08:13 | 显示全部楼层
duquancai 发表于 2016-8-29 00:20
请下载附件,打开Word文档,点击按钮,OK!

很好,比我想象的还好,谢谢你,大师。只是我是一个笨虾,不会操作,在我复制代码进入宏时,却显示缺少end sub,怎么回事啊?能将详细操作讲解吗?再次表示谢谢。

TA的精华主题

TA的得分主题

发表于 2016-8-29 09:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhouguangcai 发表于 2016-8-29 08:13
很好,比我想象的还好,谢谢你,大师。只是我是一个笨虾,不会操作,在我复制代码进入宏时,却显示缺少en ...

你只需要把第一句随便改一下,Private Sub CommandButton1_Click()
比如改为:Sub shiyishi()

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-8-29 12:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
duquancai 发表于 2016-8-29 09:44
你只需要把第一句随便改一下,Private Sub CommandButton1_Click()
比如改为:Sub shiyishi()

我真的太笨了,从来没使用过word宏操作过文档,真不懂啊。在使用中出现了什么二义名Private Sub CommandButton1_Click()咋回事?如果不用执行宏按钮(怕打印出,也影响美观),而用宏直接运行不行吗?能截图讲解使用方法吗?谢谢你,你的方法真的太棒了,想学想会用,恳请一教

TA的精华主题

TA的得分主题

发表于 2016-8-29 12:21 | 显示全部楼层
试卷样本(前),准备两份。在执行查找替换时,它俩都要勾上使用通配符

获取试题的这一份:
查找栏:【考点】*【点评】*^13
替换栏:留空

获取答案的这一份:
查找栏:([0-9].)*(【分析】*)(【点评】*^13)
替换栏:\1\2

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-8-29 15:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
KGB的愤怒 发表于 2016-8-29 12:21
试卷样本(前),准备两份。在执行查找替换时,它俩都要勾上使用通配符。

获取试题的这一份:

不错很好!你很棒!谢谢你!学习了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-8-30 11:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhouguangcai 发表于 2016-8-29 12:16
我真的太笨了,从来没使用过word宏操作过文档,真不懂啊。在使用中出现了什么二义名Private Sub CommandB ...

很想学习,教一哈学生呗

TA的精华主题

TA的得分主题

发表于 2016-12-31 14:26 | 显示全部楼层
我依葫芦画瓢,加了一点把标题和题型加黑的内容!

  1. Sub 先复制备份文档()
  2.     Selection.WholeStory    'CTR+A
  3.     Selection.Copy
  4.     Documents.Add DocumentType:=wdNewBlankDocument
  5.     Selection.PasteAndFormat (wdPasteDefault)
  6.     ChangeFileOpenDirectory ThisDocument.Path & ""
  7.     ActiveDocument.SaveAs FileName:="试卷与答案(已分开).doc"
  8.     Call 试题与答案分开
  9.     MsgBox "已经将试卷与答案分开,请保存当前文档!"
  10.     Selection.HomeKey Unit:=wdStory    ''跳到文首
  11. End Sub

  12. Sub 试题与答案分开()
  13.     Dim S$, mt, mh, Orng As Range, trng As Range
  14.     Dim Arg As Range, m%, i%, j%
  15.     Set Arg = ActiveDocument.Content
  16.     Selection.EndKey wdStory

  17.     Selection.InsertBreak Type:=wdPageBreak    ''插入分页符

  18.     Selection.Text = "------------------中考数学答案------------------" & Chr(13) & Chr(13)
  19.     Selection.Font.Size = 16
  20.     Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
  21.     Selection.Font.Name = "黑体"

  22.     Selection.Collapse wdCollapseEnd ''跳到下一行行首
  23.    
  24.     With CreateObject("VBScript.Regexp")
  25.         .Global = True: .MultiLine = True
  26.         .Pattern = "^([一二三四]+、[^\r]+\r)(?:(?!^[一二三四]+、[^\r]+\r).)+"
  27.         For Each mt In .Execute(Arg)
  28.             S = mt.submatches(0)
  29.             Selection.Text = S
  30.             Selection.Font.Size = 12
  31.             Selection.Font.Name = "黑体"

  32.             Selection.Collapse wdCollapseEnd

  33.             i = mt.FirstIndex: j = mt.Length
  34.             Set Orng = ActiveDocument.Range(i, i + j)
  35.             .Pattern = "^【分析】.+?【答案】(?:(?!^【点评】).)+"
  36.             For Each mh In .Execute(Orng)
  37.                 m = m + 1
  38.                 i = mh.FirstIndex: j = mh.Length
  39.                 Set trng = ActiveDocument.Range(Orng.Start + i, Orng.Start + i + j)
  40.                 trng.Copy
  41.                 Selection.Text = m & "."
  42.                 Selection.Collapse wdCollapseEnd
  43.                 Selection.Paste
  44.             Next
  45.         Next
  46.     End With
  47.     With ActiveDocument.Content.Find
  48.         .Text = "【考点】*【分析】*【解答】*【答案】*【点评】[!^13]@^13"
  49.         .Execute
  50.         .Replacement.Text = ""
  51.         .MatchWildcards = True
  52.         .Execute Replace:=wdReplaceAll
  53.     End With
  54. End Sub
复制代码


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 01:31 , Processed in 0.050418 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表