基于Excel VBA批量处理学生信息
2015-04-23唐娟
唐 娟
(湖北职业技术学院,湖北 孝感 432000)
Microsoft Excel软件集成了种类繁多、功能各异的函数,极大方便了广大用户利用该软件进行信息的统计、分析和管理等工作。但由于函数使用方式的单一,并不能完全满足学校工作的需要[1]。如批量对学生信息进行处理时,经常需要拆分一个总表、合并多个子表以及提取学生照片等等,这些工作单靠工作人员用原始的手工复制、粘贴和保存来完成,不仅操作麻烦,工作效率低,还容易出错。事实上,Microsoft Excel还有一个非常有用且功能强大的工具,即Excel VBA,通过一些合适的VBA代码,可以避免这些繁杂的操作步骤,实现便利的各种功能。
1 EXCEL中VBA开发简介
VBA技术的实质就是VB的编程,通过VB的编程完成需要的功能。VBA的服务对象是Office中的各个应用程序。在Excel中,VBA的主要服务对象就是数据表和图形图像。VBA在Excel为它提供的平台中可以充分展示自己的强大优势,在VBA的应用下Excel的数据处理能力得到了进一步的提升[2]。VBA入门的门槛较低,编程要求并不高。
以下给出EXCEL 2010中VBA编程和执行程序的基本步骤[3]:
(1)点击“开发工具→Visual Basic编辑器”命令,进入“Visual Basic编辑器”窗口。
(2)在左侧“工程资源管理器”窗口中,选中保存宏的工作簿,然后执行“插入→模块”命令,插入一个新模块(模块1)。
(3)将相关宏代码输入或复制、粘贴到右侧的编辑窗口中。
注意:宏的结构是:
Sub宏名称()
相关代码
End Sub
(4)输入完成后,关闭“Visual Basic编辑器”窗口返回即可。
(5)执行该程序,可以点击“开发工具→宏”,选择相应的宏名即可。
2 VBA编程实现各种信息表的拆分及合并
学校各部门会下发很多表格给各个班级填报,如学生信息表,各类证书考试报名数据表,学生体检情况表,学生银行卡号表,学生交费统计表等等,这些信息大多是用EXCEL电子表格来存储。有时需要按班级将一个总表分成独立的工作表分发到各班,有时又需要将各班填报好的独立工作表汇成一个总表,有时还需要再次分发给各班核对修改,所以这就需要频繁进行两种操作:将各个工作表合并成一个总表或者将总表拆分成各个工作表。学校工作人员可以基于EXCEL VBA,为以上两个操作分别编写宏,下面以合并一个工作簿下所有工作表为例,给出其功能代码。
Sub HBGZB()
Application.Screen Updating=False
For j=1 To Sheets.Count ’定义J=1到单元表数量
If Sheets(j).Name<>Active Sheet.Name Then
X=Range("A65536").End(xlUp).Row+1
Sheets(j).Used Range.Copy Cells(X,1)
End If
Next
Range("B1").Select
Application.Screen Updating=True
Msg Box"当前工作簿下的全部工作表已经合并完毕!"End Sub
3 VBA编程实现照片提取
学生经常会集体报考一些证书类考试,为了保证报名时个人信息与照片相对应,且报名的各项数据不出任何差错,可以将个人信息和照片制成一个电子表格打印出来,让各班学生核对并签字。学校一般都会存有学生以身份证号命名的学籍照,将这些照片集中存放在一个文件夹中,便可以利用vba编程,将这些照片提取到电子表格中,以下是相应的功能代码。
sub ZPTQ()
’所需的照片为.jpg格式,照片大小一致,放在“照片”文件夹,该文件
夹和excel文档同一目录
For Each Shp In Active Sheet.Shapes
If Shp.Type=mso Picture Then Shp.Delete
Next
Dim My Pc Name As String
For i=2 To This Workbook.Active Sheet.Used Range.Rows.Count
’从第2行、3列开始逐次向下取身份证号,并将照片放在第4列单元格内
My Pc Name=Active Sheet.Cells(i,3).Value&".jpg"
’Msg Box"图片的完整路径是"&This Workbook.Path&"照片"&My Pc Name
Active Sheet.Cells(i,4).Select’选择要插入图片的单元格作为目标
Dim MyFile As Object
Set MyFile=Create Object("Scripting.File System Object")
If MyFile.File Exists(This Workbook.Path&"照片 "&MyPcName)=False Then
Msg Box This Workbook.Path&"照片"&MyPcName&"图片不存在"
Else
’在选定的单元格中插入图片
Active Sheet.Pictures.Insert(This Workbook.Path&"照片"&MyPcName).Select
End If
Next i
end sub
实现效果如图1所示。
图1 EXCEL工作表提取照片效果图
利用VBA编程批量处理学生信息,帮助广大用户从繁重的数据处理中解脱出来,实现高效、准确的信息管理。以上给出的功能代码,可供学校行政管理人员参考使用。
[1]冯陈芙.EXCEL VBA在高校教务管理中的应用[J].办公自动化,2015,2.
[2]赵志东.Excel VBA技巧应用[J].北京:人民邮电出版社,2007.
[3]李晓玫,杨小平.Excel中的VBA程序设计[J].四川师范大学学报,2004,7.