ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助:如何才能更加精确的查找执行呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-12-15 01:18 | 显示全部楼层 |阅读模式
本帖最后由 bylandi 于 2024-12-16 12:53 编辑

我想只想查找段首的序号(序号中的数值为1~2位数),用来匹配样式。
可是,如果段落中包含了数字,那他也会被识别到,并且被执行。


大侠们能否指点,如何解决呢?

还有,如何才能不识别表格中的数字呢?



image.jpg


  1. Sub 自动样式()
  2.     Dim i As Paragraph
  3.    
  4.     With ActiveDocument
  5.         For Each i In .Paragraphs
  6.             With i.Range
  7.                         If .Text Like "*.*.*.*.*" Then
  8.                             .Style = wdStyleHeading5
  9.                         ElseIf .Text Like "*.*.*.*" Then
  10.                             .Style = wdStyleHeading4
  11.                         ElseIf .Text Like "*.*.*" Then
  12.                             .Style = wdStyleHeading3
  13.                         ElseIf .Text Like "*.*" Then
  14.                             .Style = wdStyleHeading2
  15.                         End If
  16.             End With
  17.             Next
  18.        End With
  19. End Sub
复制代码
自动样式.rar (24.28 KB, 下载次数: 9)

TA的精华主题

TA的得分主题

发表于 2024-12-15 08:10 | 显示全部楼层
要么用正则匹配   要么就现在有数字的段落前面加一个特殊符号 在匹配

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-15 12:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我是小白,不太懂这些呢,能否帮直接帮我修改代码呢?

TA的精华主题

TA的得分主题

发表于 2024-12-15 14:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
bylandi 发表于 2024-12-15 12:18
我是小白,不太懂这些呢,能否帮直接帮我修改代码呢?

可以试一下
Q11.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-15 17:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 bylandi 于 2024-12-15 18:35 编辑

十分感谢您的帮助。
就是这个效果,感谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-15 18:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 bylandi 于 2024-12-15 19:53 编辑

用短文章测试没有问题
但是 用于长篇文章,发现存在以下2个问题


1、部分章节的序号有乱,本来是第3级的,却匹配成了2级的样式
2、部分序号没有删除完整,后面还存在多余数字。

还有个问题,使用Information(12) 来跳过表格,会造成运行十分慢,有否别的方案呢?

未标题-1.png


以下是调整后的代码(您原代码的大纲级别与样式级别差了一个等级)


  1. Sub A自动样式()
  2.     Dim 段落 As Paragraph, 正 As Object, i As Byte, 字符 As Long, 范围 As Range
  3.     Set 正 = CreateObject("vbscript.regexp")
  4.     arr = Array("^\d+\.\d+[^\.]", "^\d+\.\d+\.\d+[^\.]", "^\d+\.\d+\.\d+\.\d+[^\.]", "^\d+\.\d+\.\d+\.\d+\.\d+[^\.]")
  5.     brr = Array(wdStyleHeading2, wdStyleHeading3, wdStyleHeading4, wdStyleHeading5)
  6.     For i = LBound(arr) To UBound(arr)
  7.         With 正
  8.             .Pattern = arr(i)
  9.             .Global = True
  10.             .IgnoreCase = False
  11.             .MultiLine = True
  12.             For Each 段落 In ActiveDocument.Paragraphs
  13.                 If .Test(段落.Range.Text) Then
  14.                     'If 段落.Range.Information(12) Then GoTo 1
  15.                     段落.Range.ParagraphFormat.Style = brr(i)
  16.                     '=======删除原来的编号=======
  17.                     Set match = .Execute(段落.Range.Text)(0)
  18.                     字符 = Len(match)
  19.                     Set 范围 = 段落.Range
  20.                     范围.SetRange 范围.Start, 范围.Start + 字符 - 1
  21.                     范围.Delete
  22.                 End If
  23. '1:
  24.             Next
  25.         End With
  26.     Next
  27. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2024-12-17 15:40 | 显示全部楼层
bylandi 发表于 2024-12-15 18:03
用短文章测试没有问题
但是 用于长篇文章,发现存在以下2个问题

再试一下吧 还有问题的话自己处理一下  不知道文档里面会有什么问题
QQ截图20241217153909.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-21 18:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
近2天工作比较忙,十分感谢您的耐心指导和帮助。

TA的精华主题

TA的得分主题

发表于 2024-12-21 19:35 | 显示全部楼层
楼主,下面是本坛大神 sylun 老师编写的“跳过表格”的代码,速度不错,请试试!
  1. Sub SkipTable()
  2.     Dim r(), n&
  3.    
  4.     'Skip-Table/Code by sylun
  5.     With ActiveDocument
  6.         ReDim r(.Tables.Count + 1)

  7.         If .Tables.Count = 0 Then
  8.             Set r(1) = .Content
  9.         Else
  10.             For n = 1 To .Tables.Count
  11.                 If n = 1 Then
  12.                     Set r(n) = .Range(0, .Tables(n).Range.Start)
  13.                 Else
  14.                     Set r(n) = .Range(.Tables(n - 1).Range.End, .Tables(n).Range.Start)
  15.                 End If
  16.             Next
  17.             Set r(n) = .Range(.Tables(n - 1).Range.End, .Content.End)
  18.         End If
  19.     End With
  20.    
  21.     For n = 1 To UBound(r)
  22.         With r(n)
  23.             .Select
  24.             Selection.Font.Color = wdColorRed
  25.         End With
  26.     Next
  27. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-23 09:23 | 显示全部楼层
感觉您的回复
您的贴子我也都看了好多了,感谢您为大家做的无私奉献。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-12-24 03:48 , Processed in 0.047666 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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