ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

我有一张试卷附带有答案,如何才能用宏把答案填写到正确的位置呢?谢谢

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-10-21 12:17 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 cumulonimbus 于 2011-10-21 14:22 编辑

我有一张试卷附带有答案,如何才能用宏把答案填写到正确的位置呢?答案在22页。

希望各路朋友能出手相助,八仙过海,各出奇招,想向各位学习一下。

156394.rar

25.49 KB, 下载次数: 198

TA的精华主题

TA的得分主题

发表于 2011-10-21 12:39 | 显示全部楼层
哇 楼主你可以去加入丐帮了~~{:soso_e120:}

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-21 13:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 cumulonimbus 于 2011-10-21 13:04 编辑

一定有办法的,用宏,可是我功力有限,想不出来到底应该怎么写程序。{:soso_e109:}

TA的精华主题

TA的得分主题

发表于 2011-10-21 17:46 | 显示全部楼层
试做了一下,有点复杂:
  1. Sub test()
  2.     Dim a() As String, i As Integer
  3.     Dim aa() As String, c As Integer, n As Integer
  4.     Dim TF As Boolean, s As Long
  5.     Application.ScreenUpdating = False
  6.     With ActiveDocument.Content.Find
  7.         '搜集答案信息部分
  8.         .Text = "填空题"
  9.         .Forward = False
  10.         .MatchWildcards = True
  11.         If .Execute Then .Forward = True
  12.         .Text = "^13[0-9]@.[!^13]{1,}"
  13.         .Parent.Collapse wdCollapseEnd
  14.         Do While .Execute
  15.             ReDim Preserve a(i)
  16.             a(i) = .Parent.Text
  17.             a(i) = Trim(Mid(a(i), InStr(a(i), ".") + 1))
  18.             i = i + 1
  19.             If i > 60 Then Exit Do  '填空题共有61题
  20.         Loop
  21.         .Parent.Collapse wdCollapseEnd
  22.         Do While .Execute("[0-9]@.[∨×]")
  23.             ReDim Preserve a(i)
  24.             a(i) = .Parent.Text
  25.             a(i) = Trim(Mid(a(i), InStr(a(i), ".") + 1))
  26.             i = i + 1
  27.         Loop
  28.         .Parent.Collapse wdCollapseEnd
  29.         Do While .Execute("[0-9]@.[A-F]{1,}")
  30.             ReDim Preserve a(i)
  31.             a(i) = .Parent.Text
  32.             a(i) = Trim(Mid(a(i), InStr(a(i), ".") + 1))
  33.             i = i + 1
  34.         Loop
  35.         
  36.        '定位填写答案部分
  37.         .Parent.WholeStory
  38.         i = 0
  39.         .Text = ""
  40.         .Font.Underline = wdUnderlineSingle
  41.         .Format = True
  42.         Do While .Execute
  43.             If .Parent.Text <> Chr(13) Then
  44.                 If TF = False Then
  45.                     aa = Split(a(i), Chr(32))
  46.                     TF = True
  47.                 End If
  48.                 For n = c To UBound(aa)
  49.                     c = c + 1
  50.                     If aa(n) <> Empty Then
  51.                         .Parent.Text = Chr(32) & aa(n) & Chr(32)
  52.                         If n = UBound(aa) Then
  53.                             i = i + 1
  54.                             c = 0
  55.                             TF = False
  56.                         End If
  57.                         Exit For
  58.                     End If
  59.                 Next
  60.             End If
  61.             .Parent.Collapse wdCollapseEnd
  62.         Loop
  63.         .Format = False
  64.         .Text = "(^32{4,})"
  65.         Do While .Execute
  66.             With .Parent  '一道选择题如有两个以上括号,答案只在第一个括号内
  67.                 If .Paragraphs.First.Range.Start > s Then
  68.                     .SetRange .Start + 2, .End - 2
  69.                     .Text = a(i)
  70.                     s = .Paragraphs.First.Range.Start
  71.                     i = i + 1
  72.                 End If
  73.                 .Collapse wdCollapseEnd
  74.             End With
  75.         Loop
  76.     End With
  77.     Application.ScreenUpdating = True
  78. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-21 19:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼上的sylun辛苦了。这也能做出来,厉害哇!
可惜我道行尚浅,看不太懂word代码。
不过,我一定好好研究研究。
谢谢

TA的精华主题

TA的得分主题

发表于 2011-10-21 19:54 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-21 19:59 | 显示全部楼层
我真丢人呀,看到这里,我就被卡住了。
请问sylun, .Text = "^13[0-9]@.[!^13]{1,}"这究竟是代表什么?如能指教,不胜感激

TA的精华主题

TA的得分主题

发表于 2011-10-21 21:19 | 显示全部楼层
本帖最后由 chuhaiou 于 2011-10-21 21:37 编辑

我终于消化了这个代码了

TA的精华主题

TA的得分主题

发表于 2011-10-22 07:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢sylun兄的分享!
时间关系,没办法详细学习和消化代码.
请教如果答案已在题目中,如何将其提取出来放在题目后,即楼主附件的样式:题目与答案分离?

TA的精华主题

TA的得分主题

发表于 2011-10-22 08:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
sylun 发表于 2011-10-21 17:46
试做了一下,有点复杂:

非常有效!收藏学习,不懂的到时请教。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-27 19:55 , Processed in 0.048512 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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