网站首页  词典首页

请输入您要查询的论文:

 

标题 Excel VBA在图书馆中文新书复本推荐中的应用
范文

    

    

    

    摘要:基于图书馆日常工作中的中文新书书目筛选及复本数推荐工作(简称“中文新书复本推荐”),针对书目Excel表中描述字段较多以及量大、浏览体验不佳的问题,利用Excel VBA设计用户窗体,实现逐行浏览书目信息,点击选取建议复本数的功能,让采选人员每次将关注点集中在一本书目上。在窗体添加了连接查询SQL Server数据库返回历史推荐次数,以及根据书名进行在线书评查询的功能。

    关键词:图书馆;复本选书;Excel;VBA;用户窗体

    中图分类号:G250.7 文献标识码:A

    文章编号:1009-3044(2020)05-0055-03

    开放科学(资源服务)标识码(OSID):

    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”)

    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.

    【通联编辑:谢媛媛】

    收稿日期:2019 -12 -15

    作者简介:关智远(1990-),男,山东人,助理馆员,硕士,主要研究方向为科学计量与评价,资源建设与评估。

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/15 21:41:42