核心期刊咨詢網
您當前的位置:首頁 > 學術論文 > 電子信息論文 > Excel VBA在圖書館中文新書復本推薦中的應用

Excel VBA在圖書館中文新書復本推薦中的應用

來源:核心期刊咨詢網位置:電子信息論文時間:2020-04-26 10:0812

  摘要:基于圖書館日常工作中的中文新書書目篩選及復本數推薦工作(簡稱“中文新書復本推薦”),針對書目Excel表中描述字段較多以及量大、瀏覽體驗不佳的問題,利用Excel VBA設計用戶窗體,實現逐行瀏覽書目信息,點擊選取建議復本數的功能,讓采選人員每次將關注點集中在一本書目上。在窗體添加了連接查詢SQL Server數據庫返回歷史推薦次數,以及根據書名進行在線書評查詢的功能。

  關鍵詞:圖書館;復本選書;Excel;VBA;用戶窗體
 

計算機工程與應用

  1 問題概述

  雖然電子資源的采購經費在高校圖書館中占據越來越大的比重,但紙質資源尤其是紙質圖書仍然是圖書館館藏的重點之一[1-2]。師生可隨時通過圖書館讀者薦購平臺、定期書展以勾選書目或者“你選書、我買單”等活動參與到圖書館的采訪工作中。另外,圖書館的館配商也會定期提供大量的書目清單共采選人員篩選。

  隨著我國圖書出版的逐年增長,每年都有大量新書品種出現,具體到高校圖書館的采購工作,明確采訪原則,對館配商提供的大批量書目數據進行有效篩選,從中獲取到符合高校館藏發展需求的高質量紙質圖書顯得尤為重要[3]。

  在中文圖書的采選初期,往往需要具備不同學科背景的團隊成員對相應的書目數據進行標記,加總之后的數量作為是否訂購該書的參考,最后再由專人進行匯總,繼續對建議訂購書目和建議復本數進行整理和提交。

  以Excel文件形式展示的大量書目信息雖然格式穩定規范,但由于字段繁多(總計有27個字段),有些字段內容較長,不便于逐條進行仔細評選甄別。另外,對圖書選擇除了要考慮書名、出版社、學科分類、價格、裝幀之外,圖書的摘要也比較重要,雖然在Excel單元格中可以通過設置自動換行或者在上方編輯欄中展開查看,但在上千有時甚至上萬行密集的表格中逐行操作效率較低、瀏覽體驗不佳也容易錯行。對一些書可能還需要查看書評作為參考[4]。以往同一種書的推薦歷史也需要考慮以避免重復推薦。

  2 窗體界面

  為了解決上述問題,本文利用Excel VBA工程中的用戶窗體將表格數據重新排列顯示,將每一個書目的重要字段同時顯示在一個窗口上,用文本框來顯示字數較多的字段(主要為了給“內容提要”字段擴大顯示空間)。另外將復本數的填寫方式改為從下拉菜單中進行選擇并更新到指定單元格,同時利用VBA連接本機SQL Server數據庫查詢每條書目以往選書情況,顯示該書歷史推薦次數,提供檢索書目網絡書評的按鈕并顯示處理進度。采選人員通過在Excel中運行宏來調用模塊中的程序,項目中模塊和用戶窗體(UserForml)的關系以及其中主要代碼及功能概括如圖1所示。軟件環境為Exce12016版,模塊1中包含一個Sub子程序Book_One_by_One用以打開UserForml,UserForml實現前文所述功能,其中的查詢連接數據庫功能需要調用模塊1中的searchSQL函數。

  首先,在VBA工程界面,右鍵點擊VBAProject,分別插入一個模塊和窗體,顯示為“模塊1”和“UserForml”,添加完畢如圖2所示。

  其次,雙擊UserForml,從工具箱浮窗提供的控件中,分別點擊插入標簽控件,文本框控件、命令按鈕等,并按每條書目的顯示字段進行排列,控件詳情如下表1。最終形成的UserForml界面如圖3所示。

  3 模塊及控件事件代碼

  如圖3所示,用戶窗體中要顯示每本書中的很多字段,需要將各個標簽或文本框顯示內容綁定到Excel每行的特定單元格。另外,在通過下拉列表選擇建議復本數并點擊確認之后,程序需要自動將復本數更新到指定單元格,并且窗體顯示的書目信息跳轉到下一條。實現逐條瀏覽的兩個按鈕以及搜索書評按鈕也需要能夠正常實現其功能。基于現有Excel表結構以及處理要求,將窗體代碼劃分為如下部分。

  首先進行全局變量定義。主要是用以標識當前所在的單元格的行號,右鍵用戶窗體選擇查看代碼,確認代碼界面上方兩個下拉列表分別顯示“通用”和“聲明”,輸入Dim m_lngRowAs Long。

  其次是窗體初始化代碼,即用戶在Excel表中運行宏,打開窗體時需要顯示的內容,右鍵用戶窗體選擇查看代碼,確認代碼界面上方兩個下拉列表分別顯示“UserForm”和”Initialize”。Me指代該窗體,英文點后跟標簽的名稱以定位控件,代碼內容如下,其中冒號用于將多行短語句合并成一行以減少行數。

  Private Sub UserForm_lnitialize0

  ’選中B2單元格

  Range(”B2”).Select

  'C2單元格書名

  Me.bookTitle= Range(”C2”):Me.isbn= Range(”B2”)

  Me.authors= Range(”D2”):Me.publisher= Range(”E2”)

  Me.pubdate= Range(”W2”):Me.price= Range(”F2”)

  Me.subject= Range(”H2”):Me.secondTitle= Range(”12”)

  Me.Series= Range(”L2”):Me.language= Range(”X2”):

  Me.edition= Range(”M2”):Me.pages= Range(”N2”)

  Me.size= Range(”02”):Me.layout= Range(”V2”)1 [2]

  Me.note= Range(”()2”):Me.textbook= Range(“S2”)

  Me.classCode= Range(”T2”):Me.readers= Range(”U2”)

  Me.rec_number= Range(”AS2”):Me.abstracts= Range(”R2”)

  ’當前所在行

  m_lngRow=2

  ’顯示處理進度,以當前行/書目總量的形式表示,CStr函數可將整數轉換為字符串

  Me.progress= CStr(m_lngRow -1)&”/”&CStr(ActiveSheet.Range(”A65535”).End(xlUp).Row -1)

  ’調用模塊函數查詢該書歷史推薦

  Me.re_time= searchSQL(Range(”B2”))

  ’復本數選擇下拉列表

  Fori=1 T0 3

  ComboBoxI.Addltem i

  Next

  End Sub

  第三,實現逐條書目瀏覽及復本數確認的功能。在通過按鈕來回瀏覽時更新窗體的代碼與上述相似,不同之處在于通過更新相應的行以獲取不同字段在相應單元格中的值。next_row(下一行)命令按鈕代碼直接將m_lngRow值加1,回到上一行的命令按鈕代碼中則將全局變量m_lngRow減去1,并保證m_lngRow不會小于2。這樣在每次選中復本數后點擊確認按鈕時,更新單元格中的復本數值,并調用上述next_row_Click0將窗體顯示內容自動更新到下一條。確認按鈕的代碼如下所示。

  Private Sub confirm_Click0

  7更新單元格復本數

  Range(”G”& ActiveCell. Row)=Me.ComboBoxl

  ’顯示下一條

  Call next_row_Click

  End Sub

  第四,是在線書評以及數據庫連接查詢功能。查詢在線書評的功能主要是在必要時可以參考網絡書評給復本推薦人員更全面的參考,鑒于中文書評缺少較為豐富完整的api的現狀,在該工程中主要是以豆瓣讀書為參考來源,將當前用戶窗體中的書名,通過url的形式添加到網頁中并在指定的瀏覽器中打開搜索結果頁面,以便于用戶瀏覽查看是否有書評以及評價情況,對應按鈕點擊的代碼如下。

  Private Sub searchBookReview_Click0

  Shell“C:\Program Files\Mozilla Firefox\firefox.exe”&”https://search. douban. com/book/subject_search? search_text=”&Me.bookTitle

  End Sub

  在上述窗體顯示的代碼中,多次調用了searchSQLO這一函數,它被置于模塊1中,用以連接本機SQL Server數據庫,數據表中保存了以往的推薦記錄,與Excel表具有相同的字段,在窗體的re time標簽控件中顯示該書被推薦的累計次數。編寫連接數據庫的函數之前,在Visual Basic的“工具一引用”選項中,確認Microsoft ActiveX Data Objects 2.0 Library處于勾選狀態。在模塊1中定義的searchSQL函數如下。

  Public Function searchSQL(isbn As String) As String

  ’初始化

  Dim conn As ADODB.Connection

  Dim rs As ADODB.Recordset

  Dim rcn As String

  Set conn= New ADODB.Connection

  Set rs= New ADODB.Recordset

  ’打開數據庫連接

  conn. ConnectionString=”Provider=SQLOLEDB;Initial Cata-log=JournaI;Data Source=localhost;lntegrated Security=SSPI”

  conn.Open

  ’獲取查詢結果

  Set rs= conn.Execute(”Select count(*) as number from bookswhere ISBN=¨’&isbn&”’:”1

  ’更新推薦次數變量rcn

  If Not rs.EOF Then

  rcn= rs(”number”1

  rs.Close

  Else

  MsgBox”error, no data.”, vbCritical

  End If

  ’關閉數據庫連接

  If CBool(conn.State And adStateOpen) Then conn.Close

  Set conn= Nothing

  Set rs= Nothing

  ’返回推薦次數

  searchSQL= rcn

  End Function

  模塊1種除了連接查詢數據庫的函數searchSQLO之外,是復本推薦人員從Excel表運行宏的對應Sub.此步驟直接打開用戶窗體(UserForml)。

  Sub Book_One_by_One0

  UserForml.Show

  End Sub

  最后在Excel運行宏。將用戶窗體和模塊保存后,可以在任何書目Excel表的VBA工程中導入和運行,在Excel軟件“開發工具”選項卡下點擊“宏”,選擇宏名(此處為“Book_One_by_One”)點擊執行,用戶窗體開始逐條展示書目信息。點擊建議復本量下拉菜單可以選擇并確認,也可以通過點擊按鈕來回切換書目信息,每次只關注一本書的詳細情況,所有字段一目了然,點擊搜索書評按鈕可以直接打開瀏覽器顯示書評搜索結果,便于采選人員更好地對采選并選擇復本數。

  圖4為用戶窗體運行界面。

  4 結束語

  針對Excel表格顯示書目項目瀏覽體驗差,不利于采選人員全面判斷書目質量以推薦復本數的問題,本文基于ExcelVBA設計并實現了能夠更易瀏覽和處理的用戶界面,并提供了額外的參考書評以及連接數據庫查詢歷史推薦的功能,實現了幫助提高采書質量、優化工作流程的目的。今后考慮進一步考慮添加館藏查重、借閱參考和團隊協作處理等功能。 參考文獻:

  [1]蔡迎春,當前藏書采選機制對藏書質量的影響與思考[J].圖書情報工作,2019,63(9):31-37.

  [2]薛惠娜.紙電融合出版背景下高校圖書館選書問題研究[D].福州:福建師范大學,2018.

  [3]隋銀昌.“搶單式”中文圖書采選模式研究[Jl.大學圖書情報學刊,2018,36(4):30-33.

  [4]彭靜,加強網絡書評在圖書采選中的運用[Jl.圖書館理論與 實踐,2006(2):122-123.

  推薦閱讀:計算機教師怎么在核心期刊發表論文

電子信息論文發表流程

電子信息論文發表流程-核心期刊咨詢網
城市管理論文發表咨詢電話:400-7890619

相關論文閱讀

期刊論文問答區

電子信息優質期刊

省級期刊、國家級期刊、核心級期刊快速發表,電子信息論文發表就找核心期刊咨詢網

最新期刊更新

精品推薦