摘要:VBA是一种面向对象的、可视化的、事件驱动的编程语言,是Windows应用程序通用的宏控制语言,语法较为简单,但它能够在Word、Excel等办公软件中高效地处理一些具有显著特征的、程序性工作。在书稿编校中,不少工作属于具有一定特征的重复性简单劳动,如文字段落排版、词语查找替换、图表号检查等。如果稿件篇幅较长,仅靠人工逐个处理,工作量大,也非常耗时,而且容易遗漏甚至出现错误。如果此类工作交由Word VBA进行辅助批量处理,则可大幅提高工作效率,有效降低编辑工作错误率。文章首先对Word VBA作简要概述,列出VBA在Office办公软件中的一些用途,并介绍使用方法;接着对VBA中非常重要的、使用较多的正则表达式作简要概述,列举了一些正则表达式匹配实例,并介绍了用于有效测试正则表达式准确性的正则表达式测试工具,以帮助读者更好地编写和测试复杂的正则表达式;然后以文字段落排版、批量替换用词、集中汇总检查序号等为例,具体阐述Word VBA在书稿辅助编校中的应用,同时给出相应程序的核心代码,以供读者参考。文章最后指出,Word VBA在书稿编校中应用广泛,工作中应根据书稿特点编写出通用性较强的程序,并在使用中测试完善,以不断提高书稿编校工作的效率。
关键词:Word;VBA;书稿;编校;排版;替换;匹配
中图分类号:G232 文献标志码:A 文章编号:1674-8883(2024)09-0206-05
科技书稿具有标题层级及数据、图表、公式、专业术语多的特点,因此编校工作量较大,出版周期较长。从作者提供的稿件来看,不少稿件存在版面较乱、体例格式不统一、错别字多、用词不统一、使用标点符号和字母符号不规范等问题。而解决这类问题的编校工作有不少属于重复性简单劳动,如果仅靠人工逐个操作,编辑加工工作量很大,需要消耗不少的时间和精力,而且容易漏改和错改,同时也增加了排版和校对的工作量。如果采用Word VBA辅以批量处理,则能事半功倍。例如,文字段落排版、标题和图表的编号汇总检查、词语批量查找和替换、中英文词汇分离等,都能通过在Word中运行VBA快速实现。
VBA(Visual Basic for Applications)是一种面向对象的、可视化的、事件驱动的编程语言,是基于VB(Visual Basic)的框架建立起来的,其语法、功能甚至开发环境与VB基本相同[1]。VBA是Windows应用程序通用的宏控制语言,语法比较简单,可直接调用Word、Excel、Access等应用程序的各项强大功能[2]。作为绑定在桌面应用程序中执行办公自动化的语言,VBA可以在Office办公软件中高效处理一些程序性工作。例如,批量提取数据[3],对词、计量单位等进行批量替换,查找上下文重复的内容[4],通过建立数据库在稿件相关位置自动引入批注[5],将PPT文档转换为Word文档[6],批量制作桌签[7],查询与处理参考文献[8-9],等等。
由于VBA可以使用宏记录器记录用户的各种操作并将其转换为VBA程序代码,因此VBA容易学习和使用。由此可知,VBA在Windows应用程序中应用比较广泛,本文探讨VBA在Word软件中的应用。在Word软件中,可按“ALT+F11”组合快捷键启动Word VBA程序编辑器,如图1所示。图1中右上角区域为代码窗口,代码编写完成后,按F5键即可执行程序,程序执行结果直接在Word软件中体现。
正则表达式(Regular Expression),在代码中通常缩写为regex、regexp或RE,是一种文本模式,包括普通字符(如英文字母、阿拉伯数字)和特殊字符(称为元字符)。它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串[10],是一种用于模式匹配和搜索文本的工具。正则表达式应用非常广泛,可以应用于各种编程语言(如VBA,Python等),可以用于文本查找和替换、提取大量文本文件中的有用信息、网页抓取等。例如,“\d{4}-\d{2}-\d{2}”,可以匹配格式为“YYYY-MM-DD”的日期;“\W+”,可以用于匹配非单词字符(除字母、数字、下划线以外的任何字符)。在编写较为复杂的正则表达式时,为了验证正则表达式的准确性,可以采用正则表达式测试工具进行测试,如图2所示。
书稿主要由词、数字、字母、标点等元素组成。对具有相同特征的元素或组合元素,可以通过采用正则表达式进行匹配和搜索。而书稿的很多编校工作就具备某一类特征且属于简单重复性劳动,如文字段落排版、词语检索替换等。基于此,在书稿编校中,可以充分利用正则表达式的功能进行搜索、标记、删除、替换等方面的操作,以满足编校工作的需求。
Word VBA对文字段落实现自动排版是可行、有效的。雷群泌[11]研究了Word VBA在公文中的自动排版技术,提高了工作效率。张槐权[12]利用宏实现自动排版处理。唐淑玲[13]利用宏实现了批量Word文档快速格式化,大幅提高了编辑校对效率。
为了减少修改标记,降低排版和校对的工作量,编辑一般会对收到的稿件先进行简单排版,即统一各层级行间距、字体、字号大小、位置、缩进等。其人工操作步骤一般为先选定段落,然后依次设定各种格式。快一些的办法是先定义各层级样式,然后依次为各段落赋予设定好的样式。对于篇幅较长的稿件,这么做需要花费大量的时间。如果采用Word VBA程序,则可以实现一键排版,保证各级标题、正文、图表、公式等按样式排版。
(一)实现方法
首先,做样式模板,定义其各级段落排版样式。将样式模板中的各种层级段落样式定义为标题1、标题2、标题3、正文等,每个样式均根据需要设定好段落格式、字体与字号。然后,利用Word VBA程序向需排版文档导入样式模板中事先设定的样式,并用正则表达式匹配查找需排版文档的各层级段落,对符合条件的应用与样式模板相同层级的体例格式,从而使需排版文档各层级段落的字体、字号、行距、缩进等符合要求。
可以看出,该方法的重难点主要在于如何识别各层级段落。其实,要识别各层级段落,只要根据各层级段落特征编写准确的正则表达式进行匹配搜索即可实现。例如,有些稿件一级标题为“第一章 ×××”,那么可以知道其特征为以“第一章”字眼开头。这时可通过Word VBA正则表达式(^第[一二三四五六七八九、]章*.+)进行匹配查找。需要说明的是,遇到非标题的段落开头也出现类似字眼时,需要进一步增加匹配条件,如附加段落长度的条件、段落末尾无标点,等等。当然,程序不是万能的,利用Word VBA进行排版仅适用于层级段落特征比较明显的稿件,对需要赋予过多条件才能识别的段落不建议采用。因为如果条件太多,电脑计算量增大,程序处理的时间会明显增加。
(二)主要代码
稿件中经常出现一些错别字、禁用词、敏感词以及名词术语不统一的情况。对于篇幅较长的稿件,逐个替换工作量比较大,如果能够建立一个用词替换库(可不断更新),然后利用这个库进行一次性批量替换,那么工作效率将大大提高,而Word VBA就可以轻松实现这个任务。崔玉洁等[14]人研究了基于Word VBA技术的一键智能编校系统,实现了对敏感词和重复词的标注、对指定格式的调整等,极大地提高了编辑的书稿处理效率和处理质量。毛星等人研究了基于Word VBA的科技论文自动编校技术,实现了科技名词、敏感词和重复词句的高亮显示等[15]100-101,取得了较好的效果。
xuUk5O1JxDPWYVvzUlAXZPdjju3GfwS7SEpUI4LhHYw=(一)实现方法
首先用Excel软件建立名词、字母、符号等的替换库,包含错误项(Excel第1列)和改正项(Excel第2列)。用词替换库示例见表1。Word VBA程序通过调用替换库,对稿件全文进行搜索,查找到对应的错误项后可用颜色进行标记或直接替换。需要注意的是,纳入替换库内的词、字母和符号替换修改后要务必确保是正确的,不会有特例出现。例如,“高铁”替换为“高速铁路”,在很多情况下是没有问题的,但是遇到“提高铁路”这种特例,就产生了错误。遇到这类特例时,可以附加条件作更为严格的匹配检索。因此,建议在替换的时候,对替换处还应作颜色标记处理,以便后期加工的时候复核。而对于一些敏感词、禁用词,可以仅作颜色标记,不作替换,以便人工作进一步处理。
(二)主要代码
科技图书的标题和图表一般编号比较多,编校中需要作专项检查,检查其连续性。对于篇幅较长的稿件,逐页查看标题、图表号,工作量也很大。如果能利用程序提取所有章节标题、图表题及其序号汇总于Excel中,并标记其所在页和行号,便可快速集中检查序号连续性和快速修改错误处,大大提高工作效率。此外,根据图表序号出现的次数,还可检查其在正文的引用情况。如某个图号只找到一处,则说明此图在正文中未作引用。毛星等[15]99-100人研究了图表编号连续性的自动编校,减少了工作量,降低了差错率。
(一)实现方法
首先新建Excel文档,然后用正则表达式匹配搜索出所有层次标题并写入Excel文档,同时注明标题所在页码和行号,以便对错误序号进行查找修改。要实现这个功能,关键在于匹配的正则表达式。因此,应根据章节标题的特征,准确写出正则表达式。
(二)主要代码
利用Word VBA程序对书稿进行辅助编校的地方还很多,如图表编号、数据单位前加空、双语词汇分解处理等,只要是能提炼出规律性特征的重复性工作,就有可能采用程序进行处理。本文以文字段落排版、批量替换用词、集中汇总检查序号为例,作常用功能的举例说明,旨在抛砖引玉,为读者提供思路和方法。编辑可以根据书稿特点,充分利用程序辅助处理一些简单重复性的编校工作,从而大大减轻自身负担。
Word VBA程序使用非常便捷,应尽可能编出通用性较强的程序,而对特殊情况可另行处理。需要特别指出的是,由于各稿件原排版情况不同,容易出现程序适用性问题,因此务必做好书稿备份,多做测试,待程序修改完善、稳妥后再投入使用。当前,出版行业利用程序辅助编校的能力还非常有限,广大编辑仍然需要投入大量的时间和精力。然而,随着技术的不断发展,未来人工智能或许在出版行业大有可为。
参考文献:
[1] 许晓锋,杨扬,葛明君. Word VBA辅助标准编写工作的研究[J].软件导刊,2010,9(1):47-49.
[2] 李逦,常广炎.基于VBA的Excel数据对Word文档的自动转换[J].电脑知识与技术,2015,11(14):197-198.
[3] 何振娟,王玮,刘海,等. EXCEL中VBA及WORD邮件合并功能在批量处理报表中的应用[J].电脑知识与技术,2021,17(6):212-214.
[4] 杨秋奎. Word VBA在编辑工作中的应用探析[J].新闻研究导刊,2022,13(10):207-209.
[5] 郑小光,田旭,张强.基于Word VBA及宏的计算机辅助编辑加工[J].编辑学报,2017,29(S1):89-91.
[6] 张捷,封俊红.基于VBA的PPT文档转换为Word文档的研究与实现[J].微型电脑应用,2009,25(2):61-62,64.
[7] 王克波,马晨臣.利用WORD VBA编程实现批量制作艺术字桌签[J].秘书之友,2023(2):46-48.
[8] 王玥,毛善锋,刘谦. Word文档中通过CrossRef自动查询与整合英文参考文献DOI的实践[J].中国科技期刊研究,2013,24(2):333.
[9] 侯修洲,黄延红.基于CrossRef数据库的参考文献自动加工及XML标引方法[J].编辑学报,2017,29(1):70-72.
[10] CUGGZ. 一篇带给你正则表达式完整指南[EB/OL]. 51CTO,(2022-06-01)[2024-02-04]. https://www.51cto.com/article/710479.html.
[11] 雷群泌. Word VBA自动排版方法在公文处理中的应用[J].中国新技术新产品,2021(4):32-34.
[12] 张槐权.基于VBA技术对Word文档的公文格式审核[J].电脑知识与技术,2017,13(25):209-210,238.
[13] 唐淑玲.使用VBA技术批量格式化Word文档[J].电脑知识与技术,2011,7(9):2194-2195.
[14] 崔玉洁,文娟,廖坤,等.基于Word VBA技术的一键智能编校系统[J].编辑学报,2018,30(6):624-626.
[15] 毛星,李艳娜,董里.基于Word VBA的科技论文自动编校技术[J].天津科技,2020,47(1):98-101.
作者简介 陈小刚,副编审,中国铁道出版社有限公司铁 路建设与城轨出版中心副主任,研究方向:土 木工程类图书出版。