王 磊 張仁瓊
(合肥工業大學圖書館,安徽合肥230009)
利用VBA技術和EndNote軟件建立查新報告數據庫
王 磊 張仁瓊
(合肥工業大學圖書館,安徽合肥230009)
〔摘 要〕針對查新報告中各種有效信息未被整理、利用的現狀,提出了一種利用VBA技術和EndNote軟件建立查新報告數據庫的方法。首先,利用Word VBA技術,依據文本特征從Word文檔里抽取查新報告元數據項,之后利用Excel VBA技術將Word中的元數據項變為Excel數據,同時將Excel數據轉換為EndNote可識別的文本文檔從而建立了基于EndNote軟件的查新報告數據庫。
〔關鍵詞〕查新報告;數據抽??;VBA技術;EndNote
查新報告是查新機構根據查新委托書的要求,通過查新項目的查新點與所查文獻范圍內的文獻信息進行比較分析,對查新點做出新穎性判別后,以書面形式撰寫的客觀、公正的技術文件[1]。作為一種針對新穎性的鑒定報告,與其它科技類數據源相比,具備創新技術路線清晰、創新主題明確、創新結論對比客觀、有序等優點,并客觀反映出了創新主體、創新內容、創新領域、創新程度等各類信息。但現實中查新報告經常僅作為一次性鑒定材料,用完即廢,其包含的各種創新信息并未被有效地挖掘、利用[2]。其實,自2001年1月1日開始實施的國家科技部制定的《科技查新規范》就規定每個查新項目的《科技查新報告》需登記著錄到國家查新工作數據庫[3]。但是,到目前為止國家查新工作數據庫還沒有建立,各查新站的查新報告存放方式還是以紙質加電子文檔形式存放為主。雖然有個別查新機構使用查新數據庫管理[4],但是購進一個數據庫系統價格較為昂貴,且不同系統導出的數據文檔都不統一,極難共享,這不利于今后全國查新報告統一數據庫的建立。同時這些系統需要手動輸入各種字段信息,如項目名稱、委托人、委托單位、檢索詞等等,這不但費時費力,還很容易出錯。針對這一問題,本文提出一種利用VBA技術和End-Note軟件建立科技查新報告數據庫的簡易方法,與此同時還可以利用這些數據方便地實現對查新報告的統計和深度挖掘。
目前,幾乎所有科技查新機構都選擇用Word軟件編寫查新報告。Word文檔易于編輯、修改、呈現文件內容,但其本身不包括語義信息,不易于數據信息的查詢和交換。介于此筆者設計了采用Word VBA技術和EndNote軟件實現構建科技查新報告數據庫的簡易方法。具體設計方案如圖1所示。

圖1 查新報告數據庫設計方案
查新報告數據庫設計具體流程如下:
(1)根據查新報告Word文檔中分析出的固定文本特征,利用Word VBA技術抽取查新報告元數據項,得到包含元數據項內容的Word文檔。
(2)利用Excel VBA技術將Word中的元數據項抽取、轉換為Excel工作表中數據,此時的Excel工作表可實現元數據項統計、基于共現與耦合的元數據項深度挖掘,同時Excel數據表格可以方便轉換為各種數據類型,如XML數據、CSV數據、DIF數據交換格式、SYLK符號鏈接格式,從而可以導入各種主流數據庫和數據分析軟件。
(3)依據絕大多數科技查新站都在使用EndNote軟件的現狀,以及EndNote軟件創建數據庫的特點,本文將Excel數據轉換為EndNote可識別的文本文檔。
(4)將數據導入EndNote,建立基于EndNote軟件的查新報告數據庫,數據庫可實現各種統計和檢索功能。
2.1查新報告中元數據項的抽取
對一篇正規的查新報告本身來說,雖然不同部委(教育部、科技部)的查新報告撰寫規范略有不同,但都嚴格遵循其定義的格式,具有嚴格的編排結構。如查新報告編號、委托項目名稱、查新委托人等待抽取的數據內容在查新報告Word文檔中都有固定的文本特征,且多數待抽取的數據內容有可參照定位的文本信息。為此,筆者針對不同特征的數據內容項編寫了對應的元數據項抽取規則。同時為了使查新報告抽取時更加準確、智能化,在窗體控件中增加了分子式下標修正、添加字段、中文數據庫日期修正、簽字日期修正、生成查新費用等,并編寫了相應的程序。圖2為窗體界面。
要使查新報告中的元數據項被Word VBA精確抽取,就要針對元數據項設計準確的抽取規則。其核心工作就是尋找待抽取Word文檔中的文本特征、位置特征以及排除元數據項中空格、換行符、非顯示字符對精確抽取的干擾。
如字符串“報告編號:”之后就是數據項“報告編號”的內容,例1就是基于“報告編號:”文本特征所編寫的程序代碼。
例1:
Public arr(14)as String
……
ActiveDocument.Range.Select
With Selection.Find
.ClearFormatting
.Text=″報告編號:″
.MatchWholeWord=True
.Execute
End With
Selection.Collapse wdCollapseEnd
Set myRange=Selection.Range
str=Trim(Mid(myRange.Paragraphs(1),6))
Set regx=CreateObject(″vbscript.regexp″)
With regx
.Global=True
.Pattern=″201436000L310([0-9]{3,})″
Set Mat=.Execute(str)
For Each m In Mat
arr(0)=m.Value
Next
End With
If arr(0)=″″Then MsgBox″報告編號可能有錯誤!″
If Len(arr(0))>16 Then MsgBox″報告編號可能有錯誤!-太長了″
……
以上代碼定義了一個大小為15的數組,其作用是保存各元數據項內容。通過對“selection”對象里的“Find”方法在文檔里查找到“報告編號:”對應的行,將其設定為工作區,之后通過“mid”函數取該行字符串第五位后的所有字符,該字符串就是報告編號與換行符。為了使抽取的報告編號完整、準確,筆者使用了正則表達式,其格式為“201436000L310([0-9]{3,})”,這樣就可以將完整、準確的報告編號寫入數組“arr(0)”中,同時該方法具備一定的報錯功能,可以提示報告編號錯誤種類。
例2是基于“審核員(簽字):”文本特征所編寫的程序代碼。
例2:
……
ActiveDocument.Range.Select
With Selection.Find
.ClearFormatting
.Text=″審核員(簽字)″
.MatchWholeWord=True
.Execute
End With
Selection.Collapse wdCollapseEnd
Set myRange=Selection.Range
a=Trim(myRange.Paragraphs(1))
Set regx=CreateObject(″vbscript.regexp″)
With regx
.Global=True
.Pattern=″審核員(簽字):|審核員職稱:|\s+″
Mat=.Replace(a,″-″)
arr(9)=Mid(Mat,2,Len(Mat)-2)
End With
……
以上代碼首先定位到“審核員(簽字):”所在行所有字符,之后利用正則表達式中的“replace”替換方法將“審核員(簽字):”、“審核員職稱:”、“結尾換行符”替換為“-”,利用mid函數取該行字符串第二位到倒數第三位的所有字符。這樣可以將審核員姓名與職稱準確的寫入數組“arr(9)”中。其余數據如查新項目名稱、委托日期、查新目的、查新機構、查新點等所對應抽取規則基本等同以上兩列,本文不再贅述。
之后繼續利用Word VBA技術在查新報告Word文檔開始處插入表格,將數組中數據一一寫入表格。最終抽取結果如圖3所示。

圖3 查新報告元數據項抽取結果
2.2利用Excel VBA技術提取Word中數據信息
因為Excel數據表格可以方便轉換為各種數據類型[5-6],如XML數據、CSV數據、DIF數據交換格式、SYLK符號鏈接格式,從而導入各種主流數據庫和數據分析軟件,所以將從Word文檔插入表格中抽取元數據項并將元數據項填寫在Excel表格中相應的位置。具體見下面的程序代碼。
……
j=Cells(Rows.Count,1).End(xlUp).Row+1
On Error Resume Next
Dim wdapp As Word.Application
Dim wddoc As Document
Set wdapp=New Word.Application
wdapp.Documents.Open Filename:=ThisWorkbook.Path&″\科技查新報告-試用版(元1.0).doc″
With wdapp.Documents(1).Tables(1).Range
For i=1 To.Cells.Count
u=Left(.Cells(i).Range,Len(.Cells(i).Range)
-1)
Cells(j,i)=u
Next
End With
With wdapp.Documents(1).Tables(2).Tables(3).Range
For i=1 To.Cells.Count
u=Left(.Cells(i).Range,Len(.Cells(i).Range)
-1)
m=m&″|″&u
Next
Cells(j,16)=m
m=″″
End With
wdapp.Quit
……
以上代碼首先通過Excel中VBA技術建立對Word訪問的連接,之后提取Word插入表格中的元數據項,得到Excel數據表格。結果見圖4。

圖4 查新報告元數據項Excel表格
2.3將Excel數據轉換為EndNote可識別的文本文檔
經過以上數據處理,得到了指定順序的數據項及對應的內容,如第一列對應的是報告編號,第二列對應的是項目中文名稱。之后的工作是將Excel表格中內容按順序寫入文本文檔,包括三方面的工作:①確定EndNote導入格式的字段標識符(利用CNKI導出的EndNote格式標識系統),并按照順序將字段標識符在另一個Excel表格“Worksheets(″endnote轉換″)”中寫成第一行;②按字段標識要求將Excel表格中相應內容寫入字段標識下;(3)生成EndNote軟件識別的文本文檔。這一過程的實現具體見下面的程序。
……
Worksheets(″sheet1″).Activate
i=Cells(Rows.Count,1).End(xlUp).Row
arry=Range(Cells(2,1),Cells(i,16))
Worksheets(″endnote轉換″).Activate
For j=1 To i-1
Cells(j+1,1)=″Report″
Cells(j+1,2)=arry(j,4)
Cells(j+1,3)=Mid(arry(j,9),1,InStr(1,arry(j,9),″-″,1)-1)
Cells(j+1,4)=arry(j,2)
Cells(j+1,5)=arry(j,8)
Cells(j+1,6)=arry(j,7)
Cells(j+1,7)=″″
Cells(j+1,8)=arry(j,11)
Cells(j+1,9)=arry(j,13)
Cells(j+1,10)=arry(j,10)
Cells(j+1,11)=arry(j,5)
Cells(j+1,12)=arry(j,1)
Cells(j+1,13)=Mid(arry(j,15),9)
Next
Worksheets(″endnote轉換″).Activate
Set fs=CreateObject(″Scripting.FileSystemObject″)
Set a=fs.CreateTextFile(″C:\Documents and Settings\Administrator\桌面\Endnote格式.txt″,True)
V=Cells(Rows.Count,1).End(xlUp).Row
For j=2 To V
For i=1 To 14
l=Trim(Cells(1,i).Text)&″″&Trim(Cells(j,i))
a.WriteLine(l)
Next
Next
a.Close
……
以上代碼首先將Excel表格“Worksheets(″sheet1″)”中的各數據項寫入數組“arry()”,之后按照Excel表格“Worksheets(″endnote轉換″)”中字段標識符將數組中相應數據寫入字段標識符下。最后將生成文本文檔“Endnote格式.txt”,該文本類似CNKI導出的EndNote數據格式。圖5為生成的EndNote軟件可識別的文本文檔。

圖5 查新報告元數據項文本文件
2.4利用EndNote軟件建立查新報告數據庫
EndNote軟件作為參考文獻目錄的管理工具是由美國科學信息所(ISI)所開發研制的SCI(Thomson Scientific公司)的官方軟件[7]。目前絕大多數科技查新站為了提高文獻題錄著錄的效率都在使用該款軟件輔助查新。我們選用End-Note軟件來管理查新報告主要考慮到以下幾點:①EndNote能管理的數據沒有上限,至少能管理數十萬條數據;②科技查新機構的廣泛使用,避免了購買成本和學習時的時間成本;③可以根據個人需要重新排列并顯示數據信息,可以對貯存的信息數據庫進行檢索;④EndNote的系統資源占用??;(5)EndNote有很強的功能擴展,如果默認安裝的EndNote不能滿足要求,能很方便地擴展功能,同時其導出數據格式可以被目前大多數信息分析軟件識別,有利于查新報告數據庫的深度信息挖掘。
將數據導入EndNote軟件后可以根據實際情況來設置各種功能,如利用智能分組功能實現查新報告個人完成情況實時統計、委托單位實時統計等,因為操作完全等同于利用EndNote軟件管理個人文獻,在此不做贅述。設置完成后數據庫界面如圖6所示。
2.5利用Excel VBA深度挖掘查新報告元數據項
得到查新報告Excel元數據項數據表后可以利用Excel VBA技術來實現很多功能,如校內查新數量統計、國內外查新數量統計、查新目的統計、每個查新員查新數量統計等,下面我們利用Excel VBA技術統計查新員與查新員查新所用檢索詞的共現關系[8],然后以可視化的方式呈現出來。數據源為本校已經做好的12份查新報告Excel元數據項數據表,表1為利用VBA技術自編軟件所生成的共現多值矩陣。

圖6 查新報告數據庫界面圖

表1 查新員檢索詞共現矩陣(部分)
將該矩陣導入Ucinet軟件并利用NetDraw可視化軟件繪制查新員檢索詞共現網絡,見圖7。

圖7 查新員檢索詞共現網絡圖譜
圖中圓點與方塊間的連線表示查新員與其所用的檢索詞之間關聯。通過共現多值矩陣、共現網絡圖譜可以清楚知道查新員所做查新的具體領域,最重要的是可以對新來查新項目分配時做到有的放矢。
本文根據查新報告中不同的元數據項的格式特點,利用Word VBA技術實現了查新報告元數據項抽取,之后利用Excel VBA技術將Word中的元數據項變為Excel數據,建立了基于EndNote軟件的查新報告數據庫,實現了Excel元數據項的深度挖掘功能,也為今后全國查新報告的入庫、匯總和更深層次挖掘利用提供了數據源基礎。同時該方案也可以應用到所有固定格式Word文檔的元數據項建庫。http:∥kjcx.nuist.edu.cn/research/2013-07-10-07-04-37,2014-03-21.
[2]黃如花,王小瓊.我國科技查新機構的分布及特點[J].情報理論與實踐,2005,(3):255-259.
[3]科技查新規范[S].國科發計字[2000]544號.
[4]鄒藝.科技查新服務管理保障體系建設[J].圖書館,2008,(1):92-93.
[5]儲節旺,郭春俠.共詞分析法的基本原理及EXCEL實現[J].情報科學,2011,(6):931-934.
[6]董英斌,韓冰.LabVIEW中利用ActiveX技術訪問Excel的接口研究[J].微計算機信息,2006,(4):165-166,36.
[7]趙飛.常用文獻管理軟件功能比較[J].現代圖書情報技術,2012,(3):67-72.
[8]王磊.國內圖書館學科服務現狀可視化分析[J].圖書情報工作,2013,(2):136-142.
(本文責任編輯:馬 卓)
參考文獻
[1]教育部科技查新工作站查新報告撰寫規范(發文版)[S/OL].
·業務研究·
·業務研究·
Development of Sci-tech Novelty Retrieval Report Database by Using Excel VBA and EndNote
Wang Lei Zhang Rengqiong
(Library,Hefei University of Technology,Hefei 230009,China)
〔Abstract〕A new approach was proposed to establish Sci-tech Novelty Retrieval Report Database by using VBA technology and Endnote software due to all the effective information of Sci-tech Novelty Retrieval Report was not effectively organized and utilized in status quo.First of all,metadata items of the S&T Novelty Search Report were extracted from the word file based on text features.Secondly,metadata items of the Word file were converted to Excel data,whichwere also transformed into text file.Finally,this paper load the recognized text file into the EndNote software.Thus the Sci-tech Novelty Retrieval Report Database was established based on EndNote software and VBA technology.
〔Key words〕S&T novelty search report;data extraction;VBA technology;EndNote
作者簡介:王 磊(1981-),男,館員,博士研究生,研究方向:信息計量、學科服務。
基金項目:本文系安徽省高等學校圖書情報工作委員會基金項目“MOOC環境下高校圖書館角色定位與服務創新研究”(項目編號:TGW14A02)與合肥工業大學校級教學研究項目(項目編號:XJ201333)的研究成果之一。
收稿日期:2014-04-11
〔中圖分類號〕G250.7
〔文獻標識碼〕B
〔文章編號〕1008-0821(2015)08-0131-06
DOI:10.3969/j.issn.1008-0821.2015.08.025