ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 第一章(集成扩展宏)2020-8-15

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-8-3 22:45 | 显示全部楼层 |阅读模式
本帖最后由 413191246se 于 2020-8-15 12:48 编辑

* 应用本宏前,请一定要进行公文排版或普通排版(因为“第”字前有空格会找不到)。
* 既可添加"节/课/题/阶段/自然段"等量词;也可将n=0改为n=1查找《第1章》格式。
* 亮点:无论第一章/第一条/第一部分,均可自动设置格式、自动编号,无需手动。
  1. Sub 第一章()
  2. '集成扩展宏/第1行可添加<节/课/题/阶段/自然段>等/第3行若n=1将查找<第1章>
  3.     Const s As String = "章/条/部分"
  4.     Dim arr, i&, j&, n&
  5.     n = 0
  6.     arr = Split(s, "/")
  7.     For j = 0 To UBound(arr)
  8.         With ActiveDocument.Content.Find
  9.             .ClearFormatting
  10.             .Text = "^13第[一二三四五六七八九十百零千〇○OoOo0-90-9]@" & arr(j)
  11.             .Forward = True
  12.             .MatchWildcards = True
  13.             Do While .Execute
  14.                 i = i + 1
  15.                 With .Parent
  16.                     With ActiveDocument.Range(Start:=.Start + 1, End:=.End - Len(arr(j)))
  17.                         .Delete
  18.                         If n = 0 Then
  19.                             .Fields.Add Range:=.Paragraphs(1).Range, Text:="= " & i & " \* CHINESENUM3"
  20.                             .Fields.Unlink
  21.                         Else
  22.                             .InsertBefore Text:=i
  23.                         End If
  24.                         .InsertBefore Text:="第"
  25.                         With .Paragraphs(1).Range
  26.                             With .Find
  27.                                 .Execute "^w", , , , , , , , , "", 2
  28.                                 .Execute " ", , , , , , , , , "", 2
  29.                             End With
  30.                             .Characters(InStr(.Text, arr(j)) + Len(arr(j)) - 1).InsertAfter Text:=Chr(-24159)
  31.                             If arr(j) = "条" Then
  32.                                 If .Text Like "*[!。]?" Then .Characters.Last.InsertBefore Text:="。"
  33.                                 With ActiveDocument.Range(Start:=.Start, End:=.Characters(InStr(.Text, arr(j))).End).Font
  34.                                     .NameFarEast = "黑体"
  35.                                     .NameAscii = "Times New Roman"
  36.                                     .Bold = True
  37.                                     .Color = wdColorPink
  38.                                 End With
  39.                             Else
  40.                                 If .Text Like "*。?" Then .Characters.Last.Previous.Delete
  41.                                 If Len(.Text) - (InStr(.Text, arr(j)) + Len(arr(j)) - 1) = 4 Then .Characters.Last.Previous.InsertBefore Text:=Chr(-24159)
  42.                                 With .Font
  43.                                     .NameFarEast = "黑体"
  44.                                     .NameAscii = "Arial"
  45.                                     .Size = 16
  46.                                     .Bold = True
  47.                                     If j = 0 Then
  48.                                         .Color = wdColorRed
  49.                                     Else
  50.                                         .Color = wdColorGreen
  51.                                         If Len(arr(j)) > 1 Then .Size = 18
  52.                                     End If
  53.                                 End With
  54.                                 With .ParagraphFormat
  55.                                     .CharacterUnitFirstLineIndent = 0
  56.                                     .FirstLineIndent = CentimetersToPoints(0)
  57.                                     .Alignment = wdAlignParagraphCenter
  58.                                     .SpaceBefore = 30
  59.                                     .SpaceAfter = 24
  60.                                 End With
  61.                             End If
  62.                         End With
  63.                     End With
  64.                 End With
  65.             Loop
  66.         End With
  67.         i = 0
  68.     Next
  69. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-8-4 08:43 | 显示全部楼层
本帖最后由 413191246se 于 2020-8-15 12:35 编辑

略。。。。

TA的精华主题

TA的得分主题

发表于 2020-8-4 09:52 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-8-4 10:08 | 显示全部楼层
谢谢 ming 老师 吉言!(最近好久不见啊!?)

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-8-15 22:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
top.........
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 05:43 , Processed in 0.037247 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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