小秘书的福音——使用Word VBA打造自动排版工具
脱又极端
楼主
发布于 2023-6-5 10:33:12
阅读 1353
查看全部
自己办公室的秘书一枚。公文处置是我的日常,公文排版是我最根底的工作之一。文字排版其实是件无聊的工作,字体,字号、行距被规定得死死的,我们的工作就是识别,然后去设置。然而,这种机械式反复工作,做不得几下就腻了,我决定借助工具的辅助,帮我快速的完成工作。
经过一番折腾,终于做出了这一版,效果是这样的:
排版助手的流程讲解:
一、遍历选区内的每一个段落、或者直接遍历全部文档:- For Each para In Selection.Paragraphs
- ...
- Next
- For Each para In ActiveDocument.Paragraphs
- ...
- next
复制代码 二、使用正则表达式,寻找文章中各个元素的特征(大标题、一级标题、二级标题),记录他的长度,得出它的位置,然后设置它的字体。如:- Dim RegEx一级标题, Matches一级标题 As Object
- Set RegEx一级标题 = CreateObject("vbscript.regexp")
- RegEx一级标题.Pattern = "^[一二三四五六七八九十]{1,3}、[^。,,]+[,,、]?[^。,,]+\s*(。|$)"
- For Each para In Selection.Paragraphs
- If Matches一级标题.Count > 0 Then
- strlen = Len(Matches一级标题.Item(0).Value)
- ActiveDocument.Range(Start:=para.Range.Start, End:=para.Range.Start + strlen).Font.Name = "黑体"
- end if
- next
复制代码 三、以上代码就是这个排版助手的知识核心。其中,最重要的部分,就是正则表达式的编写。它定义了你认为的“一级标题”应该是什么样子。比如我的这个匹配的形式:- "^[一二三四五六七八九十]{1,3}、[^。,,]+[,,、]?[^。,,]+\s*(。|$)"
复制代码 可以匹配以“一、”开头,中间有一个或者没有逗号,结尾为句号或者设么都没有的情况:
一、会议说明(匹配)
二、参会人员。XXX,OOO、YYY(匹配)
三、会议强调,要严格执行党内法规,坚持把纪律规矩摆在前面。(不匹配,因为有2个逗号)
四、完毕语
第一次在网站上分享我自己的小知识。自己原来是学计算机的,但是工作后,在办公室做了秘书,技术荒废了好久。但是,转念一想,自己既然是学计算机的,为什么不用自己的电脑技术,为实际的工作提供助力呢?
Word软件无疑是世界上使用最广泛的软件之一,它功能强大,但是并不是每一个人都能掌握。据我观察,普通文员掌握水平最多20%,甚至大多数文员,连手动排版都觉得困难。这是一个超级工具普及各个角落的时代,人与人之间的差距,很大水平上,就是掌握复杂工具的才干之间的差距。
今天这个工具,看起来只要小小几段代码,但是对一个需要每天都对公文停止排版的文员,绝对是炸弹级别的助手。假设你正好是公务员、政府两办的朋友,绝对要透彻的研究一下。 |
|
|
|
|