■馮 民 高紹強(qiáng)
1)河北科技大學(xué)學(xué)報編輯部,河北石家莊市裕華東路70號 050018
2)河北科技大學(xué)信息科學(xué)與工程學(xué)院,河北石家莊市裕華東路70號 050018
近年來,我國科技期刊紛紛進(jìn)行數(shù)字化轉(zhuǎn)型,以期利用數(shù)字技術(shù)的傳播優(yōu)勢擴(kuò)大刊物的影響力,這其中涉及各種期刊數(shù)據(jù)的提取。人工提取數(shù)據(jù)勞動量大,耗費時間,且準(zhǔn)確度不高,故勢必被計算機(jī)提取所取代[1-2]。
針對方正fbd文件用excel宏程序提取數(shù)據(jù)的文章較少且論述較為簡單。筆者用“excel”和“fbd”,或“excel”和“方正”作為關(guān)鍵詞在中國知網(wǎng)只搜到2篇相近文獻(xiàn)[3-4]。文獻(xiàn)[3]使用 word宏制作目次文件,然后手工復(fù)制fbd文件到excel,并錄制大量的宏進(jìn)行數(shù)據(jù)的采集和處理,總體上不夠簡練;文獻(xiàn)[4]通過VB提取方正排版文件的元數(shù)據(jù),但所提方案較為復(fù)雜。
本文以能自動提取《河北科技大學(xué)學(xué)報》、《河北工業(yè)科技》(以下簡稱《學(xué)報》、《科技》)數(shù)據(jù)的宏程序編寫為例,介紹用excel宏程序從fbd文件中提取數(shù)據(jù)的編程方法。《學(xué)報》、《科技》分別為單欄和雙欄排版,doi位置不同,一些定位項目不同。本文可為多刊數(shù)據(jù)的提取提供參考。
本文介紹的數(shù)據(jù)提取思路是:定位數(shù)據(jù);采集數(shù)據(jù);處理數(shù)據(jù)。編程思路是,由簡到繁,由易到難。例如,開始編寫程序時可只循環(huán)提取一項數(shù)據(jù),同時對數(shù)據(jù)進(jìn)行一定的“去雜”處理,數(shù)據(jù)的后處理與采集部分分開,一般是在循環(huán)提取結(jié)束后,這樣針對不同的要求,可編寫不同的后處理程序。用excel打開fbd后,所有內(nèi)容都處于單元格內(nèi),且基本上是每段內(nèi)容一個單元格,故對數(shù)據(jù)的處理就轉(zhuǎn)換為對單元格的處理。
定位數(shù)據(jù)用的是Ctrl Find宏語句(可由宏錄制獲得)。例如采集摘要時,定位語句如下:
對于多刊定位項目不同的情況,將“摘〓要”換成變量,如search_title,并在程序開始處用if語句進(jìn)行選擇設(shè)定(略)。
提取單元格數(shù)據(jù)主要用到賦值語句mystr=ActiveCell.Value和循環(huán)語句do…loop while或for…next。循環(huán)語句是為了考慮數(shù)據(jù)可能存在于多個單元格的情況——此時需通過循環(huán)語句將單元格內(nèi)容累加。以采集“摘要”為例,程序框圖如圖1所示。
圖1 “摘要”采集程序框圖
所采集的數(shù)據(jù)有不少方正字符需要刪除,也有如半字線、上下標(biāo)等無法顯示出來的方正符號,需要替換為正確的字符,還有將多作者、多單位分成每個作者及其對應(yīng)的單位,等等。例如內(nèi)容:
“[WT][ST]HT2SS JZ( HJ*2 無側(cè)隙端面嚙合蝸桿傳動研究綜述”,
其處理程序如下(為簡便只給出“ ”部分的“去雜”程序,其他類同):
因各數(shù)據(jù)的處理具有許多共性部分,故可將這些共性部分的處理編寫成一個或多個通用調(diào)用程序。本文中提到的revise_str()即是此種調(diào)用程序。
限于篇幅,如何定義變量以及其他編程技術(shù)未再進(jìn)行詳細(xì)介紹,讀者可查閱相關(guān)參考書、網(wǎng)頁示例或關(guān)注知名博客[5-7]。
本文介紹的excel宏程序在運行時只需輸入“刊物代號”、“年份”和“刊期”3個參數(shù),隨后程序自動完成剩余工作。按本文方法編寫兩個宏程序,分別針對勤云系統(tǒng)所需的excel目次文件及COAJ要求的數(shù)據(jù)文件(兩個文件要求輸出的數(shù)據(jù)格式不同),均能很好的實現(xiàn)和完成,且數(shù)據(jù)提取部分是通用的,只需修改后處理部分即可。本文介紹了幾個主要流程程序的編寫,并指出其他部分的編寫與之相似。
程序運行時先將fbd文件打開為excel文件。為實現(xiàn)自動化,使用 InputBox語句,其使用示例如下:
Year=InputBox(Chr(13)&“請輸入本期刊物的年份(默認(rèn)為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”命名的文件。
程序后面部分是將數(shù)據(jù)整體拷貝到宏程序所在excel的“abc”工作表。通常所有數(shù)據(jù)在第1列,但也有個別數(shù)據(jù)在第2列的情況。因此,需將第2列預(yù)處理,即判斷第2列各單元格是否有數(shù)據(jù),有則合并至同行第1列。語句如下:
利用定位語句定位“期刊基本參數(shù)”,然后可利用宏程序從中解析出期刊的基本數(shù)據(jù)。由于本文只用到論文篇數(shù),故以解析論文篇數(shù)為例。
《學(xué)報》的“期刊基本參數(shù)”樣例如下:
“[期刊基本參數(shù)]CN 13-1225/TS*1980*b*A4*100*zh*P* ¥20.00*1 000*15*2014-12”
定位后的具體處理語句如下:
通過上述提取和轉(zhuǎn)換,程序自動獲取本期所載的文章篇數(shù)“15”。
通常,正文數(shù)據(jù)出現(xiàn)的順序是固定的,故在編程時只需按順序進(jìn)行各數(shù)據(jù)的定位、提取。對于多刊數(shù)據(jù)位置不同的情況,則在相應(yīng)位置編寫的是加入判斷后的提取語句。以《學(xué)報》、《科技》為例,按照其內(nèi)容出現(xiàn)的先后順序,可依次提取論文起止頁碼、doi(《學(xué)報》)、論文題目、中文作者名、中文單位、中文摘要、中文關(guān)鍵詞、doi(《科技》)、英文題目、英文作者名、英文單位、英文摘要、英文關(guān)鍵詞、參考文獻(xiàn)。其中doi位置順序不同,故在兩個位置均有加入判斷語句的doi提取程序,以根據(jù)刊物代號判定是否需要提取doi。其他諸如收稿日期、修回日期、作者簡介、e-mail等數(shù)據(jù)信息,其位置固定在文章首頁頁腳??紤]到較長的中英文摘要可能出現(xiàn)在第2頁,即這些數(shù)據(jù)與摘要的位置順序并不固定,故必須采用新的循環(huán),從第1行開始提取數(shù)據(jù)。
鑒于提取原理相似且篇幅所限,本文僅對論文起止頁碼、doi和參考文獻(xiàn)的提取進(jìn)行介紹。
“ HT5”H [STHZ]文章編號:1008-1542(2015)01-0001-08 JY,2”
提取論文起始頁及論文篇幅的程序流程如下:
doi的提取較為簡單,在相應(yīng)位置順序處使用判斷語句。處理語句如下:
《學(xué)報》、《科技》的參考文獻(xiàn)是以“參考文獻(xiàn)/References:”開始的,故定位“參考文獻(xiàn)/References:”。需全面考慮3種情況:1)參考文獻(xiàn)沒有轉(zhuǎn)頁;2)部分參考文獻(xiàn)轉(zhuǎn)頁;3)全部參考文獻(xiàn)轉(zhuǎn)頁。
提取程序框圖見圖3。需要注意的是,當(dāng)前參考文獻(xiàn)提取程序未考慮文末有補白的情況,補白尚需人工刪除。
圖3 提取參考文獻(xiàn)的流程圖
詳細(xì)介紹了用excel宏程序提取兩個刊物fbd數(shù)據(jù)的編程思路和編程方法,運行時只需輸入刊物代號、年和期即可。其編程難度不高,容易實現(xiàn)。經(jīng)筆者1年多的使用,效果良好。
其缺點是只適合于定版后的fbd數(shù)據(jù)的提取,因為未定版fbd中定位所需的項目可能缺失、錯誤,這會導(dǎo)致定位的錯亂乃至所提取數(shù)據(jù)錯誤。即便是定版后的數(shù)據(jù),也可能存在錯誤,導(dǎo)致提取結(jié)果出錯。故程序運行完畢后對數(shù)據(jù)檢查是必不可少的步驟,相應(yīng)地完善程序也是不可或缺的。好的一面是,可以將此程序當(dāng)作定版文件的檢驗程序,以查驗人工校對可能出現(xiàn)的失誤。
參考文獻(xiàn)
[1]程維紅,任勝利,路文如,等.我國科技期刊由傳統(tǒng)出版向數(shù)字出版轉(zhuǎn)型的對策建議[J].中國科技期刊研究,2011,22(4):467-474.
[2]顧凱,鄒栩.數(shù)字出版環(huán)境下科技期刊編輯職能、工作方式轉(zhuǎn)變及自我調(diào)整策略[J].中國科技期刊研究,2012,23(3):499-501.
[3]黃鸝.Word/Excel輔助快速提取方正書版.fbd文件中文摘數(shù)據(jù)的方法研究[J].長江大學(xué)學(xué)報(自然科學(xué)版),2012,9(12):99-101.
[4]楊海亮,徐用吉.利用VB讀取方正排版文件提取元數(shù)據(jù)[J].中國科技期刊研究,2015,26(6):612-617.
[5]劉鐵英,張小白,葉慧玲.Word VBA及宏在科技期刊編輯中的應(yīng)用[J].編輯學(xué)報,2007,19(1):47-48.
[6]百度文庫.Excel_VBA_編程教程[EB/OL].[2011-04-21].http://wenku.baidu.com/view/5d4b2ae8e009581b6bd9eb0a.html.
[7]劉昌來,鄭琰燚,王國棟,等.基于VBA的稿件采編系統(tǒng)中批量信息的修改[J].編輯學(xué)報,2014,26(1):66-68.