中国科技期刊研究  2015, Vol. 26 Issue (9): 969-974   PDF    
用excel宏程序提取fbd期刊数据的简易编程
冯民1, 高绍强2    
1. 河北科技大学学报编辑部, 河北石家庄市裕华东路70号 050018;
2. 河北科技大学信息科学与工程学院, 河北石家庄市裕华东路70号 050018
摘要:【目的】使用excel宏程序从定版后的方正fbd小样文件提取多刊数据。【方法】 使用InputBox语句由用户输入刊物代号、年份、期次,确定并打开fbd文件为excel文件,数据基本都在第一列单元格中,用Ctrl Find语句定位数据,用循环语句和判断语句采集一个或多个单元格数据,最后是对数据的处理和写入。【结果】程序可有效用于提取《河北科技大学学报》、《河北工业科技》两个刊物的中英文题目、作者、单位、摘要、关键词,以及doi、收稿日期、e-mail、参考文献等数据,程序运行过程中只需使用者输入刊物代号、年和期。【结论】单独使用excel宏程序即可实现所有数据的提取,相对简单易行。【局限】此种编程容错能力较差,要求期刊格式固定不变。
关键词期刊数据    excel    宏程序    fbd    
Simple programming by using excel macroprogram for extracting journal data
FENG Min1, GAO Shaoqiang2    
1. Editorial Department, Hebei University of Science and Technology, 70 East Yuhua Road, Shijiazhuang 050018, China;
2. School of Information Science and Engineering, Hebei University of Science and Technology, 70 East Yuhua Road, Shijiazhuang 050018, China
Abstract: [Purposes] Using excel macroprogram to extract data from the final.fbd file of Fangzheng software.[Methods] Using Inputbox for users to input the journal code,year and issue so that fbd files are determined and opened to be excel files,and the data is normal in the first column. Using ctrl finds statement to locate data, then using loop statement and judgment statement extracts data from one or some cells. Finally, the data is processed and written in.[Findings] The program can be used to effectively extract data from Journal of Hebei University of Science and Technology and Hebei Journal of Industrial Science and Technology, including Chinese and English titles, authors, departments, abstracts and keywords, as well as DOI, received dates, e-mails, references, etc. In the operational process, the program only needs users to input the journal code,year and issue.[Conclusions] Using only excel macroprogram can realize the extraction of various data, which is relatively simple and practicable.[Limitations] The program has poor fault-tolerant capability, which entails that the journal format should be accurate and consistent.
Key words: Journal data    excel    Macroprogram    fbd    

近年来,我国科技期刊纷纷进行数字化转型,以期利用数字技术的传播优势扩大刊物的影响力,这其中涉及各种期刊数据的提取。人工提取数据劳动量大,耗费时间,且准确度不高,故势必被计算机提取所取代[1, 2]

针对方正fbd文件用excel宏程序提取数据的文章较少且论述较为简单。笔者用“excel”和“fbd”,或“excel”和“方正”作为关键词在中国知网只搜到2篇相近文献[3, 4]。文献[3]使用word宏制作目次文件,然后手工复制fbd文件到excel,并录制大量的宏进行数据的采集和处理,总体上不够简练;文献[4]通过VB提取方正排版文件的元数据,但所提方案较为复杂。

本文以能自动提取《河北科技大学学报》、《河北工业科技》(以下简称《学报》、《科技》)数据的宏程序编写为例,介绍用excel宏程序从fbd文件中提取数据的编程方法。《学报》、《科技》分别为单栏和双栏排版,doi位置不同,一些定位项目不同。本文可为多刊数据的提取提供参考。

1 程序设计思路

本文介绍的数据提取思路是:定位数据;采集数据;处理数据。编程思路是,由简到繁,由易到难。例如,开始编写程序时可只循环提取一项数据,同时对数据进行一定的“去杂”处理,数据的后处理与采集部分分开,一般是在循环提取结束后,这样针对不同的要求,可编写不同的后处理程序。用excel打开fbd后,所有内容都处于单元格内,且基本上是每段内容一个单元格,故对数据的处理就转换为对单元格的处理。

1.1 定位数据

定位数据用的是Ctrl Find宏语句(可由宏录制获得)。例如采集摘要时,定位语句如下:

对于多刊定位项目不同的情况,将“摘〓要”换成变量,如search_title,并在程序开始处用if语句进行选择设定(略)。

1.2 采集数据

提取单元格数据主要用到赋值语句mystr = ActiveCell.Value和循环语句do…loop while或for…next。循环语句是为了考虑数据可能存在于多个单元格的情况——此时需通过循环语句将单元格内容累加。以采集“摘要”为例,程序框图如图1所示。

图 1 “摘要”采集程序框图
1.3 处理数据

所采集的数据有不少方正字符需要删除,也有如半字线、上下标等无法显示出来的方正符号,需要替换为正确的字符,还有将多作者、多单位分成每个作者及其对应的单位,等等。例如内容:

“[WT][ST]〖HT2SS〗〖JZ(〗〖HJ*2〗无侧隙端面啮合蜗杆传动研究综述”,

其处理程序如下(为简便只给出“〖 〗”部分的“去杂”程序,其他类同):

因各数据的处理具有许多共性部分,故可将这些共性部分的处理编写成一个或多个通用调用程序。本文中提到的revise_str()即是此种调用程序。

限于篇幅,如何定义变量以及其他编程技术未再进行详细介绍,读者可查阅相关参考书、网页示例或关注知名博客[5, 6, 7]

2 编程实例

本文介绍的excel宏程序在运行时只需输入“刊物代号”、“年份”和“刊期”3个参数,随后程序自动完成剩余工作。按本文方法编写两个宏程序,分别针对勤云系统所需的excel目次文件及COAJ要求的数据文件(两个文件要求输出的数据格式不同),均能很好的实现和完成,且数据提取部分是通用的,只需修改后处理部分即可。本文介绍了几个主要流程程序的编写,并指出其他部分的编写与之相似。

2.1 将fbd文件打开为excel文件

程序运行时先将fbd文件打开为excel文件。为实现自动化,使用InputBox语句,其使用示例如下:

Year = InputBox(Chr(13) & "请输入本期刊物的 年份 (默认为2014)","确定年份","2014")

通过此语句可得到“年”变量。类似的,可得到刊物代号和期。获得年份和刊期的输入框如图2所示。

图 2 利用InputBox输入年和期

如此,打开fbd为excel文件的程序语句如下:

其中file_name是通过合并上述输入框输入的刊物代号、年和期得到的,例如输入分别为“b”、“2014”、“6”,可得file_name=Journal_code & Year & “0” & Issue=b201406.fbd。需要注意的是,在“d:\FBD\”目录下需存在以“b201406.fbd”命名的文件。

程序后面部分是将数据整体拷贝到宏程序所在excel的“abc”工作表。通常所有数据在第1列,但也有个别数据在第2列的情况。因此,需将第2列预处理,即判断第2列各单元格是否有数据,有则合并至同行第1列。语句如下:

2.2 解析“期刊参数”

利用定位语句定位“期刊基本参数”,然后可利用宏程序从中解析出期刊的基本数据。由于本文只用到论文篇数,故以解析论文篇数为例。

《学报》的“期刊基本参数”样例如下:

“[期刊基本参数]CN 13-1225/TS*1980*b*A4*100*zh*P*¥20.00*1 000*15*2014-12”

定位后的具体处理语句如下:

通过上述提取和转换,程序自动获取本期所载的文章篇数“15”。

2.3 提取正文数据

通常,正文数据出现的顺序是固定的,故在编程时只需按顺序进行各数据的定位、提取。对于多刊数据位置不同的情况,则在相应位置编写的是加入判断后的提取语句。以《学报》、《科技》为例,按照其内容出现的先后顺序,可依次提取论文起止页码、doi(《学报》)、论文题目、中文作者名、中文单位、中文摘要、中文关键词、doi(《科技》)、英文题目、英文作者名、英文单位、英文摘要、英文关键词、参考文献。其中doi位置顺序不同,故在两个位置均有加入判断语句的doi提取程序,以根据刊物代号判定是否需要提取doi。其他诸如收稿日期、修回日期、作者简介、e-mail等数据信息,其位置固定在文章首页页脚。考虑到较长的中英文摘要可能出现在第2页,即这些数据与摘要的位置顺序并不固定,故必须采用新的循环,从第1行开始提取数据。

鉴于提取原理相似且篇幅所限,本文仅对论文起止页码、doi和参考文献的提取进行介绍。

2.3.1 论文起止页码的提取

首先需定位“ 文章编号”。例如对于方正数据:

“〖HT5”H〗[STHZ] 文章编号:1008-1542(2015)01-0001-08 JY,2 ”

提取论文起始页及论文篇幅的程序流程如下:

程序可提取得到start_page(i)=1,end_page(i)=8。

2.3.2 doi的提取

doi的提取较为简单,在相应位置顺序处使用判断语句。处理语句如下:

2.3.3 参考文献的提取

《学报》、《科技》的参考文献是以“参考文献/References:”开始的,故定位“参考文献/References:”。需全面考虑3种情况:1)参考文献没有转页;2)部分参考文献转页;3)全部参考文献转页。

参考文献提取程序框图见图3。需要注意的是,当前参考文献提取程序未考虑文末有补白的情况,补白尚需人工删除。

图 3 提取参考文献的流程图
3 结 语

详细介绍了用excel宏程序提取两个刊物fbd数据的编程思路和编程方法,运行时只需输入刊物代号、年和期即可。其编程难度不高,容易实现。经笔者1年多的使用,效果良好。

其缺点是只适合于定版后的fbd数据的提取,因为未定版fbd中定位所需的项目可能缺失、错误,这会导致定位的错乱乃至所提取数据错误。即便是定版后的数据,也可能存在错误,导致提取结果出错。故程序运行完毕后对数据检查是必不可少的步骤,相应地完善程序也是不可或缺的。好的一面是,可以将此程序当作定版文件的检验程序,以查验人工校对可能出现的失误。

参考文献
[1] 程维红, 任胜利, 路文如, 等. 我国科技期刊由传统出版向数字出版转型的对策建议[J]. 中国科技期刊研究, 2011, 22(4): 467-474.(1)
[2] 顾凯, 邹栩. 数字出版环境下科技期刊编辑职能、工作方式转变及自我调整策略[J]. 中国科技期刊研究,2012, 23(3): 499-501.(1)
[3] 黄鹂. Word/Excel辅助快速提取方正书版.fbd文件中文摘数据的方法研究[J]. 长江大学学报(自然科学版), 2012, 9(12): 99-101.(1)
[4] 杨海亮, 徐用吉. 利用VB读取方正排版文件提取元数据[J]. 中国科技期刊研究, 2015, 26(6): 612-617.(2)
[5] 刘铁英, 张小白, 叶慧玲. Word VBA及宏在科技期刊编辑中的应用[J]. 编辑学报, 2007, 19(1): 47-48.(1)
[6] 百度文库. Excel_VBA_编程教程[EB/OL]. [2011-04-21]. http://wenku.baidu.com/view/5d4b2ae8e009581b6bd9eb0a.html.(1)
[7] 刘昌来, 郑琰燚, 王国栋, 等. 基于VBA的稿件采编系统中批量信息的修改[J]. 编辑学报, 2014, 26(1): 66-68.(1)