用ExcelVBA解决人力资源历史数据保存问题

2015-03-16 10:44朱洁兰
电脑知识与技术 2015年1期
关键词:历史数据人力资源

朱洁兰

摘要:该文介绍了使用ExcelVBA工具解决人力资源历史数据保存问题的过程,首先设计了两项程序功能,分别是保存当前数据源为历史数据、恢复历史数据到当前数据源;然后给出程序的实现过程详细介绍,从导入数据、设计用户界面到编码。之后给出了程序的代码展示。最后指出程序可改进之处是可以提供与ERP或HR系统是数据库接口,并且扩展历史数据的统计分析功能。

关键词:人力资源;历史数据;ExcelVBA

中圖分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)01-0218-03

各个单位或企业的人力资源数据包括的内容非常广泛,涉及到劳资、人事、培训、社保、档案等大量数据信息。随着时间的增长,历史信息不断积累,HR部门在处理历史数据的保存和再调用问题的时候,如果处理不当会造成历史数据丢失或无效,有些历史数据即使保存了也会出现查找困难的情况。因为人力资源数据大部分会用Excel软件保存和处理,作者尝试了进行ExcelVBA编程,来解决人力资源历史数据保存问题。

1 ExcelVBA编程简介

VBA是扩展微软office办公软件功能的编程利器,其中ExcelVBA编程最为广泛。国内外有很多专门讨论ExcelVBA编程问题的论坛和个人网站。在商业化的Excel软件培训中,ExcelVBA编程也是高级课程的必讲内容。

ExcelVBA是结合excel来处理一些表格数据的。它最大的优点就是可以通过用程序代码来控制一些有规律,重复性的需要手工来完成的工作,提高工作效率的目的。它的编程环境是内嵌在Excel软件之中的,只要在Excel软件的“开发工具”菜单中调用就可以了,使用起来非常快捷方便。

2 程序功能结构图

作者在本程序中设计了两项自动化功能。第一项是保存当前数据源为历史数据,通过复制“数据源”工作表到新建工作表,并把新建工作表用当前日期命名,表示新建工作表为当前日期的历史数据,当“数据源”工作表发生变动时,历史数据不受影响;第二项是恢复历史数据到当前数据源,如果当前数据源出错,需要恢复到某一时刻的历史数据时,只要输入某一个历史时期,就可以恢复到当时的“源数据”。

用户使用该Excel模板的VBA功能时,只要在发生“源数据”变动时,点击第一项保存功能的“确定”按钮即可,这样就可以保存所有的变动前的历史数据了。

3 程序实现过程

3.1 导入数据

在Excel软件中导入人力资源的数据,一般会包含企业员工的姓名、性别、出生日期、年龄、入职日期、工作年限、学历、职称、部门、职务、工资级别等基本信息。导入后把当前工作表名称修改为“源数据”。

3.2 设计用户界面

在Excel软件的第一个工作表中设计用户界面,在用户界面中插入两个“确定”按钮,再分别为它们指定相应的宏代码,如图1所示。

3.3 编写代码

本Excel模板要编写两个宏代码,都是由单击选项按钮触发事件过程,两个过程的程序流程分别如下:

1) 用户在用户界面点击第一项“保存当前数据源为历史数据”的“确定”按钮,触发其对应的事件过程。

(2) 搜索已有的工作表名称,查看是否有以当前日期命名的工作表。如果有就删除该工作表。

(3) 复制“源数据”工作表。

(4) 在工作簿的最后位置新建工作表,粘贴“源数据”工作表。

(5) 把新建工作表的名称改为当前日期。\&2. 恢复历史数据到当前数据源\&(6) 用户在用户界面点击第二项“恢复历史数据到当前数据源”的“确定”按钮,触发其对应的事件过程。

(7) 弹出输入对话框,要求用户输入一个历史时期。

(8) 搜索已有的工作表名称,查看是否有以输入的历史日期命名的工作表。如果有就复制该工作表,如果没有就退出程序。

(9) 粘贴到“源数据”工作表。\&]

3.4 程序代码展示

本Excel模板的两个宏代码分别如下:

Sub 按钮1_Click()

'以下定义工作表、变量的名称

Dim newsheet_name

newsheet_name = Date

Dim n, i As Integer

n = Worksheets.Count

i = 0

' 以下删除之前的同名工作表,不能是同一天的表

For Each Sheet In Worksheets

i = i + 1

If Sheets(i).Name = CStr(newsheet_name) Then

Worksheets(i).Delete

End If

Next

n = Worksheets.Count

'以下复制源数据表到新建工作表,并以当天日期命名

Sheets("源数据").Select

Sheets("源数据").Copy After:=Sheets(n)

n = Worksheets.Count

Sheets(n).Name = CStr(newsheet_name)

End Sub

Sub 按钮2_Click()

'请用户输入要恢复的历史数据的时间

Dim inputsheet_name, defaulttime

defaulttime = Date

inputsheet_name = InputBox(Message, "要恢复的历史数据的时间", defaulttime, 100, 100)

'以下定義工作表、变量的名称

Dim n, i, m As Integer

n = Worksheets.Count

i = 1

m = 0

'以下查看输入的日期格式是否正确,是否存在输入日期的历史数据

For Each Sheet In Worksheets

If Sheet.Name = inputsheet_name Then

m = i

End If

i = i + 1

Next

If m = 0 Then

MsgBox ("您输入的日期格式不正确或者没有这个日期的历史数据")

Exit Sub

End If

'以下复制源数据表到新建工作表,并以当天日期命名

Sheets(m).Select

Sheets(m).Copy After:=Sheets("源数据")

Worksheets("源数据").Delete

Sheets(2).Name = "源数据"

End Sub

4 程序的可改进之处

本程序的设计思路比较简单,只提供了保存历史数据和恢复历史数据两项功能,满足HR部门解决历史数据保存问题的最基本的需求。作者认为本程序的可改进之处有两点,一是用户可以和本单位使用的特定的ERP或HR系统对接,使得系统导出的源数据一键保存为历史数据;二是历史数据的统计分析功能可以有更深广的扩展,借助于Excel软件的数据统计功能,实现起来可以事半功倍。

参考文献:

[1] 宋勇江,巩伟.RSView32利用VBA实现报警历史查询[J].自动化技术与应用,2014(4).

[2] ASL.数据全面保护数据备份、恢复、粉碎全接触[J].电脑迷,2014(8).

[3] 肖红慧,陈琼.“一体化”理念下历史数据开发和管理新思路[J].中国传媒科技,2012(12).

猜你喜欢
历史数据人力资源
基于设备PF性能曲线和设备历史数据实现CBM的一个应用模型探讨
基于故障历史数据和BP神经网络的接地选线方案研究
从数据分析的角度浅谈供水企业漏损诊断
智能水表读数误差的定位和分析
基于NB—IoT的分布式水质测控系统
让人力资源会计成为企业的“新名片”
用好细节材料 提高课堂实效
宝鸡:松绑人力资源
试论人力资源会计
寻找人力资源开发新路