基于ExcelVBA的单独招生录取查询统计系统的开发
2017-03-31刘德飞周利平赵磊李奎
刘德飞++周利平++赵磊++李奎
摘 要:ExcelVBA是Excel基于VB开发的脚本语言。它具有强大的Excel使用扩展功能,完全可实现Excel中的查询统计;同时可提高办公中Excel的使用效率。单独招生录取查询统计仅是招生录取中一个小环节,没有必要使用较高成本开发系统软件实现查询统计功能。ExcelVBA可在查询中大大提高工作效率,实现多人共同统计,设计和开发该系统对ExcelVBA的扩展运用有一定的探索实践作用。
关键词:ExcelVBA 单独招生录取 查询统计 查询系统 统计系统
中图分类号:TP311 文献标识码:A 文章编号:1672-3791(2016)11(b)-0017-02
1 问题背景
云南机电职业技术学院位于云南昆明,是一所以机电专业为主要培养对象的高职院校,被评为“云南省省级示范性高等职业院校”与“国家示范性高等职业院校”的骨干高职院校,具备云南省单独招生资格,报考考生较多、竞争激烈,因此做好考生的招生服务显得更为重要。
考生通过笔试、面试后学院会将名单通过单独招生考试网发布给各位考生;因考生可以同时报考多所学校,所以必须由考生确认是否选择该校就读,并通过传真的方式回传到学院招生就业办公室,通过传统的统计、收集Excel、逐个查询录入系统;当考生需要查询时,又返回查询。具有工作量大、效率不高、不易查询等特点,又因为就招生这个小环节还没有必要开发大型系统进行查询统计,所以笔者探究用ExcelVBA的同一界面完成两项功能,期望完成对传统查询的改善,提高工作效率。
2 ExcelVBA简介
在Office对于一些烦琐、重复的操作,用户可以通过“宏”来实现。“宏”是由一系列指令组合而成的命令集,其本质是VBA代码组成的程序。VBA是微软在其开发的应用程序中共享的通用自动化语言。
Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic脚本。该语言于1993年由微软公司开发的应用程序共享一种通用的自动化语言——Visual Basic For Application(VBA),实际上VBA是寄生于VB应用程序的版本。微软在1994年发行的Excel5.0版本即具备了VBA的宏功能。
3 系统设计思路
系统开发一般由以下几个步骤组成:问题分析、需求分析、软件设计、程序编码、软件测试组成。
由于笔者是系统的使用者和开发者,常年从事招生工作,熟悉该校招生中会出现的一些问题和需求。在设计和编码阶段通过积极思考,如果使用过程中出现错误完全可实时进行调试和测试。该文仅从实现系统的一些核心模块进行设计,更好地实现预期效果。主要核心设计模块如下。
4 系统模块开发与实现
4.1 前台界面的设计与实现
准考证号文本框及查询按钮,用于识别考生个人信息。点击查询按钮可通过对Excel表格数据的查询,显示考生的姓名、性别、考分,拟录取专业和是否收到传真,逐一进行核对。
当收到考生传真时,在“是否就读”的文本框输入“是”或“否”,点击“确认”按钮以确认对考生传真的收取。
点击“清除”按钮可以清空文本框内容,也可以修正一下信息。图1是前台设计显示效果。
4.2 两个主要模块的源代码
4.2.1 查询模块
Public Sub find_Click()
Dim rng As Range
With ActiveSheet
For Each rng In [b2:b1819] //查询数据的范围
If rng.Text = tzkzh.Text Then //比对准考证号给相关的内容显示信息
xzkzh1 = tzkzh.Text
xm1 = rng.Offset(0, 1).Text
xb1 = rng.Offset(0, 2).Text
mscj1 = rng.Offset(0, 3).Text
kf1 = rng.Offset(0, 3).Text
pm1 = rng.Offset(0, 4).Text
lqzy1 = rng.Offset(0, 5).Text
sfjd1 = rng.Offset(0, 6).Text
bz1 = rng.Offset(0, 7).Text
lxdh1 = rng.Offset(0, 11).Text
time1 = rng.Offset(0, 8).Text
tj1 = rng.Offset(0, 9).Text
End If
Next
End With
End Sub
4.2.2 確认统计模块
Private Sub confirm_Click()
Dim rng As Range, rng1 As Range, m As Integer, n As Integer, k As Integer, l As Integer
With ActiveSheet
For Each rng In [b2:b1890] //查询范围
If rng.Text = tzkzh.Text Then
rng.Offset(0, 6) = sfjd1
rng.Offset(0, 7) = bz1
rng.Offset(0, 8) = Now
rng.Offset(0, 9) = tj1
End If
Next
If Len(sfjd1.Text) And Len(tj1.Text) > 0 Then
MsgBox "输入正确"//进行数据较验
Else
MsgBox "确认时是否就读或是否服从调剂不能为空值"
End If
For Each rng1 In [h2:h1890] //数据统计的实现
If rng1 = "是" Then
m = m + 1
ElseIf rng1 = "否" Then
n = n + 1
Else
k = k + 1
End If
Next
Label17 = m
Label18 = n
wfcz1 = k
End With
End Sub
5 结语
通过设计基本解决了提出的问题,同时还具备以下几个优点。
(1)无需安装数据库。巧妙地把Excel表格中的数据作为原始数据,操作方便、使用便捷、易于不太熟悉计算机的使用者单机使用。
(2)友好输入界面。界面具有良好的互动性和纠错功能,防止输入错误并纠错,实践证明比实际在Excel中录入数据的效率提高了。
当然在使用中也存在一些不足,鉴于ExcelVBA的局限性,功能还算是很强大。笔者也将继续努力在后期不断完善,力争把ExcelVBA的功能在工作中做更多扩展。
参考文献
[1]何非,叶萃娟.Excel VBA高效办公从入门到精通[M].北京: 中国青年出版社,2008.
[2]罗刚君.Exclel VBA程序开发自学宝典[M].北京:电子工业出版社,2009.