ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何查找以1.××××开始的句子

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-6-4 23:33 | 显示全部楼层 |阅读模式
以这样的1.××××标题开始的段落

查找[0-9]@[..、][!。??!::;;]@^13,可以达到效果,但当段中有数字时,就会误把其当作标题。
比如
1.××××。面积增加了2.4亩,...............

如果在VBA里使用?

TA的精华主题

TA的得分主题

发表于 2016-6-5 00:47 | 显示全部楼层
本帖最后由 duquancai 于 2016-6-5 14:12 编辑

事例文本如下(查找一级标题段落):红色标记的查找出来(红色并非格式限定条件)。
1.2个和尚抬水吃
1个和尚挑水吃(这是正文)……
1.1.这种情况少见(二级标题)
1.1.1.这是不好搞的(三级标题)
…………
10.这个问题”5.4”这什么意思啊d
这个“5.4”表示五四青年节(这是正文)…………
10.1.发表与(二级标题)
10.1.1.这是什么(三级标题)
……………
12..集公司2
这样说比较好(这是正文)……..
12.1.阐述事实(二级标题)
12.2.摆事实实事求是(二级标题)
……………
92.20世纪80年代末!
20世纪80年代末我们干了什么(这是正文)………
92.1.趋势如此(二级标题)
92.1.1.当然算数(54青年节)(三级标题)
………………..
102.2016415日:晴天
2016415日(3.8意思是“妇女节”)她们好开心(这是正文)…………
102.1.争取的是权利(二级标题)
102.2.最终的胜利(二级标题)
Word中使用正则表达式:“^\d+\.(?:\d[^.]|\D)[^\r]*\r

Sub 设置一级标题()
Dim reg As Object, i As Paragraph
Set reg = CreateObject("vbscript.regexp")
    For Each i In ActiveDocument.Paragraphs
        With reg
            .Pattern = "^\d+\.(?:\d[^.]|\D)"
            .Global = True: .IgnoreCase = False: .MultiLine = True
            If .test(i.Range.Text) = True Then i.Style = wdStyleHeading1
        End With
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2016-6-5 01:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 duquancai 于 2016-6-5 03:01 编辑

不够准确重新写的见楼上!!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-6-5 14:16 | 显示全部楼层
duquancai 发表于 2016-6-5 00:47
事例文本如下(查找一级标题段落):红色标记的查找出来(红色并非格式限定条件)。1.2个和尚抬水吃1个和尚 ...

谢谢二回复!
现在问题是:
1、能不用标题.Style = wdStyleHeading1吗?只想改字体字号、加粗就行了;
2、你上面的红色字是独立成段,有一种情况就是红色部分结束后是有句号,然后后面的内容和它是同一段的。
比如下面这种情况
QQ截图20160605141408.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-6-5 14:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
duquancai 发表于 2016-6-5 00:47
事例文本如下(查找一级标题段落):红色标记的查找出来(红色并非格式限定条件)。1.2个和尚抬水吃1个和尚 ...

谢谢回复。
现在有这种情况:
一、能不使用标题吗?我是想修改字体和颜色,用标题在实现工作中很不好掌握!
二、选择范围内替换,只替换了第1段,没能一次替换所有。

TA的精华主题

TA的得分主题

发表于 2016-6-5 15:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 duquancai 于 2016-6-5 18:24 编辑
菜菜行者 发表于 2016-6-5 14:24
谢谢回复。
现在有这种情况:
一、能不使用标题吗?我是想修改字体和颜色,用标题在实现工作中很不好掌 ...

结合你的实际情况,自己修改代码!OK

Sub test()
    With ActiveDocument.Content.Find
        .MatchWildcards = True
        .Text = "<[0-9]@[、.]"
        Do While .Execute
            With .Parent
                .Expand wdSentence
                    With .Font
                        .Bold = True
                        .Size = 18
                        .Color = wdColorRed
                        .Name = "微软雅黑"
                    End With
                .Collapse wdCollapseEnd
            End With
        Loop
    End With
End Sub
+++++++++++++++++++++++++++++++++++++++
Sub test2()
Dim reg As Object, i As Range
Set reg = CreateObject("vbscript.regexp")
    For Each i In ActiveDocument.Sentences
        With reg
            .Pattern = "^\d+[.、](?:\d[^.]|\D)"
            .Global = True: .IgnoreCase = False: .MultiLine = True
            If .test(i.Text) = True Then
                With i.Font
                        .Bold = True
                        .Size = 18
                        .Color = wdColorRed
                        .Name = "微软雅黑"
                    End With
            End If
        End With
    Next
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-6-6 09:06 | 显示全部楼层
试一下这种情况:
1.教育培育。2.5万人的。

TA的精华主题

TA的得分主题

发表于 2016-6-6 10:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 duquancai 于 2016-6-9 02:32 编辑
菜菜行者 发表于 2016-6-6 09:06
试一下这种情况:
1.教育培育。2.5万人的。

你这种情况用下面的代码:
Sub test3()
Dim reg As Object, i As Paragraph, mt, mts As Object, oRang As Range, n%
Set reg = CreateObject("vbscript.regexp")
On Error Resume Next
    For Each i In ActiveDocument.Paragraphs
        With reg
            .Pattern = "^\d+、.+?[?!。??!::;;\r]"
            .Global = True: .IgnoreCase = False: .MultiLine = True
             Set mts = .Execute(i.Range.Text)
            For Each mt In mts
               n = mt.Length
            Next
             Set oRang = Range(i.Range.Start, i.Range.Start + n)
                  With oRang.Font
                        .Bold = True
                        .Size = 18
                        .Color = wdColorRed
                        .Name = "微软雅黑"
                    End With
         End With
         n = 0
    Next
End Sub



TA的精华主题

TA的得分主题

发表于 2016-6-13 17:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
duquancai 发表于 2016-6-6 10:01
你这种情况用下面的代码:
Sub test3()
Dim reg As Object, i As Paragraph, mt, mts As Object, oRang ...

前辈好!
代码似乎运行不了,运行提示:编译错误,子过程或函数未定义。

TA的精华主题

TA的得分主题

发表于 2016-6-13 17:37 | 显示全部楼层
13907933959 发表于 2016-6-13 17:23
前辈好!
代码似乎运行不了,运行提示:编译错误,子过程或函数未定义。

我的运行没问题!下面的和上面一样的。
Sub test4()
    Dim reg As Object, i As Paragraph
    Dim mt, mts As Object, oRang As Range, n%, m%
    Set reg = CreateObject("vbscript.regexp")
    On Error Resume Next
    For Each i In ActiveDocument.Paragraphs
        With reg
            .Pattern = "^\d+、.+?[!。??!::;;\r]"
            .Global = True: .IgnoreCase = False
            Set mts = .Execute(i.Range.Text)
            For Each mt In mts
                m = mt.firstindex
                n = mt.Length
                Set oRang = Range _
                (i.Range.Start + m, i.Range.Start + m + n)
                With oRang.Font
                    .Bold = True
                    .Size = 18
                    .Color = wdColorRed
                    .Name = "微软雅黑"
                End With
            Next
        End With
    Next
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-14 02:44 , Processed in 0.027486 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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