其他分享
首页 > 其他分享> > 小秘书的福音——使用Word VBA打造自动排版工具

小秘书的福音——使用Word VBA打造自动排版工具

作者:互联网

        本人办公室的秘书一枚。公文处理是我的日常,公文排版是我最基础的工作之一。文字排版其实是件无聊的工作,字体,字号、行距被规定得死死的,我们的工作就是识别,然后去设置。然而,这种机械式重复工作,做不得几下就腻了,我决定借助工具的辅助,帮我快速的完成工作。

        经过一番折腾,终于做出了这一版,效果是这样的:

排版助手的流程讲解:

        一、遍历选区内的每一个段落、或者直接遍历全部文档:

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个逗号)

        四、结束语

        第一次在CSDN上分享我自己的小知识。自己原来是学计算机的,但是工作后,在办公室做了秘书,技术荒废了好久。但是,转念一想,自己既然是学计算机的,为什么不用自己的电脑技术,为实际的工作提供助力呢?

        Word软件无疑是世界上使用最广泛的软件之一,它功能强大,但是并不是每一个人都能掌握。据我观察,普通文员掌握程度最多20%,甚至大多数文员,连手动排版都觉得困难。这是一个超级工具遍布各个角落的时代,人与人之间的差距,很大程度上,就是掌握复杂工具的能力之间的差距。

        今天这个工具,看起来只有小小几段代码,但是对一个需要每天都对公文进行排版的文员,绝对是炸弹级别的助手。如果你正好是公务员、政府两办的朋友,绝对要透彻的研究一下。

标签:VBA,Word,一级,para,标题,Each,匹配,小秘书,排版
来源: https://blog.csdn.net/hementer/article/details/122764383