ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 提取填空题答案无果

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-28 15:09 | 显示全部楼层
sylun 发表于 2020-3-28 10:28
也可以试试如下提取方法。楼主原代码无果的主要原因是查找范围(一个段落)与查找代码(跨段落)不匹配。至 ...

谢谢大侠赐代码。
知道大侠身手不凡,果然不错。
加你为友,向你学习。愿不吝赐教。
谢谢你。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-28 15:47 | 显示全部楼层
本帖最后由 weiyingde 于 2020-3-28 16:27 编辑
sylun 发表于 2020-3-28 10:28
也可以试试如下提取方法。楼主原代码无果的主要原因是查找范围(一个段落)与查找代码(跨段落)不匹配。至 ...

Val(.Paragraphs(1).Range.Text)
这个太妙了,试了一下。非常非常好用。
比用left要省心,
比用正则要简洁。
大侠真是身手不凡……

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-28 16:30 | 显示全部楼层
sylun 发表于 2020-3-28 10:28
也可以试试如下提取方法。楼主原代码无果的主要原因是查找范围(一个段落)与查找代码(跨段落)不匹配。至 ...

大侠,能否结合我的代码说一说,说一下。
若能在我的代码基础之上进行修改,那太好了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-28 17:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sylun 发表于 2020-3-28 10:28
也可以试试如下提取方法。楼主原代码无果的主要原因是查找范围(一个段落)与查找代码(跨段落)不匹配。至 ...

For i = 1 To .Paragraphs.Count
        Set rng = .Paragraphs(i).Range
这已经是遍历文档段落了,
With rng.Find
                If .Execute("^13[0-9]@\.", , , 1) Then
这应该是按段落查找了
………………
真是弄不明白,盼望大侠给解惑!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-28 18:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

你的代码我整理出来了,测试没有效果,你看看是不是?
Sub test2()
Dim rng As Range, myrange As Range, inti As Integer
Dim istr01 As String, istr02 As String, istr03 As String
Dim dic As Object, myRegExp As Object, mhs As Object
Dim ky As Variant, tm As Variant
Set dic = CreateObject("scripting.dictionary")
Set myRegExp = CreateObject("Vbscript.RegExp")
With ActiveDocument
     For inti = 1 To .Paragraphs.Count
         Set rng = .Paragraphs(inti).Range
         With rng
              myRegExp.MultiLine = True
              myRegExp.Pattern = "(^\d{1,}\.).*"
              If myRegExp.test(.Text) Then
                 Set mhs = myRegExp.Execute(.Text)
                 If mhs.Count = 0 Then Exit Sub
                 istr01 = mhs(0).submatches(0)
                 With .Find
                      .ClearFormatting
                      .Font.Underline = wdUnderlineWavy
                      Do While .Execute
                         If .Parent.InRange(myrange) Then Exit Do
                            istr02 = .Parent.Text
                            If dic.Exists(istr01) Then
                               dic(istr01) = dic(istr01) & Space(2) & istr02
                            Else
                               dic(istr01) = istr02
                            End If
                       Loop
                  End With
                End If
            End With
        Next
    End With
    ky = dic.keys
    tm = dic.items
    For inti = LBound(ky) To UBound(ky)
        istr03 = istr03 & ky(inti) & tm(inti) & Chr(13)
    Next
    Documents.Add.Content.Text = istr03
End Sub

TA的精华主题

TA的得分主题

发表于 2020-3-28 18:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
weiyingde 发表于 2020-3-28 17:35
For i = 1 To .Paragraphs.Count
        Set rng = .Paragraphs(i).Range
这已经是遍历文档段落了,

在一个学习与交流的平台,各人的学习目的,时间长短、决心与力度等不尽相同。我想只要用心就会有收获。我以前在这个平台混了很长一段时间,后来因工作关系就较少参与了。总的说来获益不少,但这毕竟是一点个人业余爱好,并非专业人士,即使理解也不一定到位。
就这几行代码,我觉得,
(1)如要遍历段落,也许遍历集合对象好些,即for each ...
(2)对于查找代码"^13[0-9]@\."中,如果有匹配,第一个字符(段落标记)与其他字符不属于同一个段落的范围,常规情况下,在一个正常段落中不可能有这样的匹配,因此无果是正常的。另外,反斜杠在这时里是多余的,因为其后的点号不是可用作通配符的字符
至于其他因素,楼主可以查看一下find对象的相关说明

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-28 19:09 | 显示全部楼层
sylun 发表于 2020-3-28 18:50
在一个学习与交流的平台,各人的学习目的,时间长短、决心与力度等不尽相同。我想只要用心就会有收获。我 ...

从代码的简洁性和逻辑联系看,知道大侠功力不凡,以后有请教,还望不吝赐教。
事实上,这也是我的业余爱好,但就是割舍不开。
也许是与VBA的怪异情缘吧。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-28 19:15 | 显示全部楼层
duquancai 发表于 2020-3-27 22:40
请问:是不是如下代码的意思?

Sub 提取划线内容2()

答案都取出来,但就是有一点。题号有许多是重复的。
本来我想自己揣摩体会,自己修改一下,谁知脑力有限,一时还不能如愿。
你若有功夫再看一下,如何?
要求如下:
1.身体外形的变化  内部器官的变化  性机能的成熟  2.充沛的精力  敏捷的思维  强烈渴望 3.遗传  营养  锻炼  4.外在美  内在美
就像红色的数字,是不同的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-28 19:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2020-3-26 23:26
* 魏老师:我的代码不如您的高级,对付着用吧,未做优化,仅供参考:

分子已经都给完了,遗憾了,只有下次了。再次表示谢意。

TA的精华主题

TA的得分主题

发表于 2020-3-28 20:34 来自手机 | 显示全部楼层
weiyingde 发表于 2020-3-28 19:15
答案都取出来,但就是有一点。题号有许多是重复的。
本来我想自己揣摩体会,自己修改一下,谁知脑力有限 ...

题号是重复的?你把附件传上来,最终要达到什么目的?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 11:39 , Processed in 0.040384 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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