配色: 字号:
第2章
2014-06-12 | 阅:  转:  |  分享 
  




CHAPTER













人力资源管理系统的总体设计









2-1人力资源管理系统的设计指导思想



2-2人力资源管理系统的构成



2-3创建人力资源管理系统工作簿





2-4设计自定义菜单



2-5设计自定义工具栏



2-6设计系统登录窗口



2-7为工作簿对象指定事件

2-8创建人事管理数据库



2-9更新数据表中的年龄数据

2-10几个需要设置的引用项目

2-11定义公共变量









































行政与人力资源管理应用案例详解

2-1人力资源管理系统的设计指导思想

本书介绍的人力资源管理系统是以一个名为“人事管理.mdb”的数据库为基础,以Excel

VBA为开发平台,利用ADO数据库查询技术和SQL语言,实现各种人力资源数据的录入、

修改、删除、导出、统计分析、以及汇总编制各种报表。

采用Access数据库保存各种人力资源数据,而不是将人力资源数据保存为文本文件或

直接保存在Excel工作表中,主要是考虑到Access数据库保存数据具有保存数据量大、查

询方便的优点,而且也便于以后对应用系统的功能进行扩展。本系统采用结构化的设计方

法,为读者预留了发挥的空间。

本人力资源管理系统能够自动创建“人事管理.mdb”数据库文件,并自动创建各种人

力资源管理数据表。

2-2人力资源管理系统的构成

作为一个能够应用于企业实际的人力资源管理、并满足基本需要的人力资源管理系统,

应具有如下的基本功能:用户名和密码的维护、重要日期(如职工生日、合同到期日或试

用期到期日)的提醒、系统基本项目的设置、招聘管理、培训管理、职工日常管理、合同

管理、社会保险管理、职工资料信息统计与分析、数据导出及汇总、数据维护、常用工具、

帮助信息、菜单转换等基本功能。

2-2-1"d?

本书介绍的人力资源管理系统的构成如图2-1所示,包括“系统管理”、“基本设置”、

“招聘管理”、“培训管理”、“职工管理”、“合同管理”、“保险基金管理”、“资料查询与导

出”、“统计分析”、“数据维护”、“工具”、“帮助”、“系统菜单转换”和“退出系统”等14

个基本模块。

错误!

















图2-1人力资源管理系统构成图



系统管理



人力资源管理系统

资料查询与导出

保险基金管理系统菜单转换

合同管理



数据维护



统计分析



退出系统



招聘管理



基本设置



职工管理



培训管理



帮助



工具





90



人力资源管理系统的总体设计

2

2-2-2"d v??

人力资源管理系统中14个基本模块的功能介绍如下。

1.系统管理

包括“单位信息”、“修改用户名”、“修改密码”、“设置系统参数”、“系统提醒”和“数

据库维护”等基本子模块,分别用于显示单位信息、修改登录用户名、修改登录密码、设

置系统提醒参数、显示系统提醒信息、以及对数据库各个数据表的字段长度进行修改。

2.基本设置

包括“部门设置”、“职位设置”、“职务设置”、“职称设置”、“文化程度设置”、“职工

类别设置”、“工作地点设置”和“合同类别设置”等基本子模块,分别用于对部门、职位、

职务、职称、文化程度、职工类别、工作地点和合同类别等项目进行设置。

3.招聘管理

包括“招聘申请管理”、“应聘人员档案”、“应聘人员初试”和“应聘人员面试”等基

本子模块,分别用于对招聘申请管理信息、应聘人员档案资料、应聘人员初试信息和应聘

人员面试信息进行管理。

4.培训管理

包括“培训计划管理”、“职工培训管理”、“培训教师管理”和“课程信息管理”等基

本子模块,分别用于对培训计划管理信息、职工培训管理信息、培训教师信息和培训课程

信息进行管理。

5.职工管理

包括“职工档案管理”、“内部调动管理”、“职工离退管理”、“证照资料管理”和“劳

动技能管理”等基本子模块,分别用于职工档案资料、职工内部调动信息、职工离退信息、

职工证照资料和职工劳动技能资料进行管理。

6.合同管理

包括一个“职工合同管理”基本子模块,对职工的劳动合同(包括应聘人员的试用合

同)信息进行管理。

7.保险基金管理

包括“职工保险基金管理”基本子模块,对职工的各种社会保险(包括养老保险、失

业保险、医疗保险、工伤保险、生育保险)、住房公积金等资料进行管理。

8.资料查询与导出

包括“招聘计划查询与导出”、,“应聘人员档案查询与导出”、“初试信息查询与导出”、

“面试信息查询与导出”、“职工档案查询与导出”、“内部调动信息查询与导出”、“离退职

工查询与导出”、“证照资料查询与导出”、“劳动技能查询与导出”、“培训计划查询与导出”、

“职工培训查询与导出”、“培训教师查询与导出”、“培训课程查询与导出”、“职工保险查

询与导出”和“职工合同查询与导出”等基本子模块,分别查询并导出招聘计划信息、应

聘人员档案资料、应聘人员初试信息、应聘人员面试信息、职工档案资料、职工内部调动

信息、离退职工信息、职工证照资料信息、职工劳动技能资料信息、培训计划信息、职工

培训信息、培训教师信息、培训课程信息、职工保险信息资料和职工合同信息资料。





91



行政与人力资源管理应用案例详解

9.统计分析

包括“应聘人员统计分析”、“在职职工统计分析”和“离退职工统计分析”等基本子

模块,分别对应聘人员、在职职工和离退职工的构成进行统计分析。

10.数据维护

包括“数据备份”、“数据还原”和“数据清理”等基本子模块,分别完成人力资源数

据的备份、还原和清理的功能。

11.工具

包括“职工通讯录”、“计算器”、“电话区号查询”和“邮政编码查询”等基本子模块,

分别用于显示职工通讯录、调用计算器、查询电话区号和邮政编码。

12.帮助

包括“系统使用说明”和“关于”等基本子模块,分别用于显示系统使用帮助信息和

系统的一些说明信息。

13.系统菜单转换

包括“恢复Excel系统菜单”和“恢复<人事管理系统〉菜单”等基本子模块,分别用

于将<人力资源管理系统〉菜单删除并恢复Excel系统菜单,以及隐藏Excel系统菜单而恢

复人力资源管理系统菜单。

14.退出系统

退出人力资源管理系统,并将Excel工作簿的菜单恢复为Excel系统默认菜单。

2-3创建人力资源管理系统工作簿

2-3-1"dyT??

人力资源管理系统是一个名为“人力资源管理系统.xls”的工作簿文件,此工作簿由4

个名称分别为“首页”、“单位信息”、“系统提醒参数”和“用户名密码”的工作表组成。

其中,“首页”工作表为系统的操作界面,打开系统时,仅显示此工作表;“单位信息”工

作表用于存放单位基本信息;“系统提醒参数”工作表用于保存系统提醒参数(如职工生日、

劳动合同、试用人员的试用期等是否需要提醒、提前几天提醒等信息参数),“用户名密

码”工作表用来保存系统用户名和密码。“单位信息”工作表、“系统提醒参数”工作表和

“用户名密码”工作表均被隐藏起来,其中“单位信息”工作表和“系统提醒参数”工作

表用普通的方法隐藏(即通过Excel的菜单命令隐藏工作表),而工作表“用户名密码”则

通过系统程序被特殊隐藏。

2-3-2
!9"d
?

在“首页”工作表中插入一个自己喜欢的图片或其他图形对象作为系统首页的背景,

然后在此背景上再插入几个图片或自选图形对象作为点缀。插入一个艺术字“人力资源管

理系统”,并设置其格式。根据用户计算机屏幕大小,隐藏某些列和行。



92



人力资源管理系统的总体设计

2



图2-2【保护工作表】对话框

在工作表的左侧插入13个命令按钮控件,用于创建

自定义工具栏。插入命令按钮控件以及创建自定义工具

栏的详细步骤将在后面进行介绍。

在全部的图形对象及控件设置完毕后,执行【工具】

菜单中【保护】子菜单中的【保护工作表】命令,打开

【保护工作表】对话框,在“允许此工作表的所有用户

进行”列表框中取消所有的复选框,在“取消工作表保

护时使用的密码”文本框中输入密码(也可以不输入密

码),如图2-2所示,单击【确定】按钮,关闭【保护工

作表】对话框,从而对“首页”工作表进行保护。

当启动“人力资源管理系统.xls”工作簿文件后,系统的操作界面如图2-3所示。



图2-3人力资源管理系统操作界面

2-4设计自定义菜单

对于一个应用系统而言,自定义菜单或自定义工具栏是一个必不可少的组成部分。通

过创建自定义菜单或自定义工具栏,可以使应用系统的功能更加完善,操作更加方便,界

面更加美观。

2-4-11?l??¥?

人力资源管理系统的自定义菜单如图2-3所示。在人力资源管理系统的自定义菜单中,

各个菜单项又有各自不同的子菜单命令,分别完成不同的任务。人力资源管理系统的各个

菜单项及相应的子菜单命令分别如图2-4~图2-16所示。自定义菜单栏的最右边的菜单项

“[退出系统]”是一个命令按钮,没有子菜单。



93



行政与人力资源管理应用案例详解



图2-4【系统管理】菜单图2-5【基本设置】菜单图2-6【招聘管理】菜单



图2-7【培训管理】菜单图2-8【职工管理】菜单图2-9【合同管理】菜单



图2-10【保险基金管理】菜单图2-11【资料查询与导出】菜单



图2-12【统计分析】菜单图2-13【数据维护】菜单图2-14【工具】菜单



图2-15【帮助】菜单图2-16【系统菜单转换】菜单



94



人力资源管理系统的总体设计

2

2-4-27y1?l??

1.创建自定义菜单的方法

创建自定义菜单,可以利用ExcelVBA的MenuBars对象和MenuItems对象的Add方

法。

例如,建立一个自定义菜单“人力资源管理”的语句为:

MenuBars.Add"

人力资源管理

"

在自定义菜单栏“人力资源管理”中添加一个菜单项“系统管理”的语句为:

MenuBars("

人力资源管理

").Menus.Add"

系统管理

"

在菜单项“系统管理”中添加一个子菜单命令“修改用户名”,并为其自定义一个名为

“修改用户名窗口”的宏的语句为:

MenuBars("人力资源管理").Menus("系统管理").MenuItems.Add"修改用户名","修改用

户名窗口"

当自定义菜单创建完毕后,还要激活自定义菜单,语句为:

MenuBars("人力资源管理").Activate

需要注意的是,这种自定义菜单栏将隐藏Excel的菜单栏。

2.创建人力资源管理系统自定义菜单的子程序

创建人力资源管理系统自定义菜单的程序是一个名为“自定义菜单”的子程序,保存

在一个名为“自定义菜单程序”的标准模块中,其程序代码如下:

PublicSub自定义菜单()

OnErrorResumeNext

MenuBars("人力资源管理").Delete''删除原有的自定义菜单栏

''--------------------建立一个自定义菜单栏"人力资源管理"-----------------

MenuBars.Add"人力资源管理"

''--------------------为"人力资源管理"自定义菜单栏添加菜单项--------------

WithMenuBars("人力资源管理").Menus

.Add"系统管理"

.Add"基本设置"

.Add"招聘管理"

.Add"培训管理"

.Add"职工管理"

.Add"合同管理"

.Add"保险基金管理"

.Add"资料查询与导出"

.Add"统计分析"

.Add"

数据维护"

.Add"工具"

.Add"

帮助"

.Add"

系统菜单转换"

EndWith

''-----------------------

为各个菜单添加子菜单--------------------------

''

为"系统管理"菜单添加子菜单,并指定宏

WithMenuBars("人力资源管理").Menus("系统管理").MenuItems

.Add"单位信息","单位信息窗口"

.Add"-"

.Add"修改用户名","修改用户名窗口"

.Add"

修改密码","修改密码窗口"



95



行政与人力资源管理应用案例详解

.Add"-"

.Add"

设置系统参数

","

设置系统参数窗口

"

.Add"-"

.Add"

系统提醒

","

系统提醒窗口

"

.Add"-"

.Add"

数据库维护

","

数据库维护窗口

"

EndWith

''



"

基本设置

"

菜单添加子菜单

,

并指定宏



WithMenuBars("

人力资源管理

").Menus("

基本设置

").MenuItems

.Add"

部门设置

","

部门设置

"

.Add"

职位设置

","

职位设置

"

.Add"

职务设置

","

职务设置

"

.Add"

职称设置

","

职称设置

"

.Add"

文化程度设置

","

文化程度设置

"

.Add"职工类别设置","职工类别设置"

.Add"-"

.Add"工作地点设置","工作地点设置"

.Add"-"

.Add"合同类型设置","合同类型设置"

EndWith

''为"招聘管理"菜单添加子菜单,并指定宏

WithMenuBars("人力资源管理").Menus("招聘管理").MenuItems

.Add"招聘申请管理","招聘申请管理窗口"

.Add"应聘人员档案","应聘人员档案管理窗口"

.Add"应聘人员初试","应聘人员初试管理窗口"

.Add"应聘人员面试","

应聘人员面试管理窗口"

EndWith

''为"培训管理"菜单添加子菜单,并指定宏

WithMenuBars("人力资源管理").Menus("培训管理").MenuItems

.Add"培训计划管理","培训计划管理窗口"

.Add"职工培训管理","职工培训管理窗口"

.Add"培训教师管理","培训教师管理窗口"

.Add"课程信息管理","课程信息管理窗口"

EndWith

''为"职工管理"菜单添加子菜单,并指定宏

WithMenuBars("人力资源管理").Menus("职工管理").MenuItems

.Add"职工档案管理","职工档案管理窗口"

.Add"-"

.Add"内部调动管理","内部调动管理窗口"

.Add"-"

.Add"

职工离退管理","职工离退管理窗口"

.Add"-"

.Add"

证照资料管理","证照资料管理窗口"

.Add"

劳动技能管理","劳动技能管理窗口"

EndWith

''

为"合同管理"菜单添加子菜单,并指定宏

WithMenuBars("

人力资源管理").Menus("合同管理").MenuItems

.Add"职工合同管理","职工合同管理窗口"

EndWith

''为"保险管理"菜单添加子菜单,

并指定宏

WithMenuBars("人力资源管理").Menus("保险基金管理").MenuItems



96



人力资源管理系统的总体设计

2

.Add"

职工保险基金管理

","

职工保险基金管理窗口

"

EndWith

''



"

系统查询

"

菜单添加子菜单

,

并指定宏



WithMenuBars("

人力资源管理

").Menus("

资料查询与导出

").MenuItems

.Add"

招聘计划查询与导出

","

招聘计划查询

"

.Add"

应聘人员档案查询与导出

","

应聘人员档案查询

"

.Add"

初试信息查询与导出

","

初试信息查询

"

.Add"

面试信息查询与导出

","

面试信息查询

"

.Add"-"

.Add"

职工档案查询与导出

","

职工档案查询

"

.Add"-"

.Add"

内部调动信息查询与导出

","

内部调动信息查询

"

.Add"-"

.Add"

离退职工查询与导出

","

离退职工查询

"

.Add"-"

.Add"证照资料查询与导出","证照资料查询"

.Add"劳动技能查询与导出","劳动技能查询"

.Add"-"

.Add"培训计划查询与导出","培训计划查询"

.Add"职工培训查询与导出","职工培训查询"

.Add"培训教师查询与导出","培训教师查询"

.Add"培训课程查询与导出","培训课程查询"

.Add"-"

.Add"职工保险查询与导出","职工保险查询"

.Add"-"

.Add"职工合同查询与导出","职工合同查询"

EndWith

''为"统计分析"菜单添加子菜单,

并指定宏

WithMenuBars("人力资源管理").Menus("统计分析").MenuItems

.Add"应聘人员统计分析","应聘人员统计分析窗口"

.Add"在职职工统计分析","在职职工统计分析窗口"

.Add"离退职工统计分析","离退职工统计分析窗口"

EndWith

''为"数据维护"菜单添加子菜单,并指定宏

WithMenuBars("人力资源管理").Menus("数据维护").MenuItems

.Add"

数据备份

","

数据备份

"

.Add"数据还原","数据还原"

.Add"

数据清理","数据清理"

EndWith

''为"工具"菜单添加子菜单,并指定宏

WithMenuBars("人力资源管理").Menus("工具").MenuItems

.Add"职工通讯录","职工通讯录"

.Add"

计算器","计算器"

.Add"电话区号查询","区号编码"

.Add"

邮政编码查询","区号编码"

EndWith

''

为"帮助"菜单添加子菜单,并指定宏

WithMenuBars("

人力资源管理").Menus("帮助").MenuItems

.Add"

系统使用说明","系统使用说明"

.Add"-"

.Add"

关于","关于"



97



行政与人力资源管理应用案例详解

EndWith

''



"

系统菜单转换

"

菜单添加子菜单

,

并指定宏



WithMenuBars("

人力资源管理

").Menus("

系统菜单转换

").MenuItems

.Add"

恢复

Excel

系统菜单

","

恢复

Excel

系统菜单

"

.Add"

恢复

<

人力资源管理系统〉菜单

","

恢复人力资源管理系统菜单

"

EndWith

''

添加自定义退出系统按纽



Setmycommandbar=CommandBars("

人力资源管理

")

Setmybutton=mycommandbar.Controls.Add(Type:=msoControlButton)

Withmybutton

.Style=msoButtonCaption

.Caption="[

退出系统

]"

.Enabled=True

.OnAction="

退出系统

"

EndWith

Setmycommandbar=Nothing

Setmybutton=Nothing

''--------------------激活"人力资源管理"自定义菜单--------------------

MenuBars("人力资源管理").Activate

EndSub

2-5设计自定义工具栏

为了方便用户操作,还可以创建自定义工具栏。在图2-3所示的系统操作界面中,窗

口的左边有一排命令按钮,单击某个按钮,就会在系统菜单的下面创建相应的自定义工具

栏命令按钮,用户只要直接单击这些按钮,就可以进行相应的操作,而不必再到某个子菜

单中寻找某个命令。

2-5-1
!9
7?f

如果已经对首页工作表进行了保护,那么首先应该解除对首页工作表的保护。如果已

经创建了人力资源管理系统自定义菜单,那么就需要将这个自定义菜单删除,删除的方法

是:在VBA编辑器界面下,按【Ctrl+G】组合键,打开立即窗口,然后在立即窗口中输入

“MenuBars("人力资源管理").Delete”,即可删除人力资源管理系统自定义菜单,恢复Excel

的默认系统菜单。

下面详细介绍命令按钮的设计方法和步骤。

(1)在Excel系统菜单中,执行【视图】菜单中的【工具栏】子菜单中的【控件工具

箱】命令,打开【控件工具箱】工具栏,如图2-17所示。



图2-17【控件工具箱】工具栏

(2)单击【控件工具箱】工具栏中的“命令按钮”控件按钮,将鼠标移到工作表中需



98



人力资源管理系统的总体设计

2

要插入命令按钮的位置,此时鼠标的指针变为“十”字,然后向右向下拖动鼠标,插入一

个命令按钮,并调整其大小。

(3)插入的第一个命令按钮的“(名称)”属性和Caption属性均为“CommandButton1”,

此时可以单击【控件工具箱】工具栏中的“属性”按钮,打开属性窗口,如图2-18所示,

然后对命令按钮的“(名称)”属性和Caption属性进行重新设置,比如都设置为“系统

管理”。

在属性窗口中,还可以对命令按钮控件的其他属性进行设置,比如单击“Font”属性

右边的“宋体”,然后单击出现的按钮,打开【字体】对话框,如图2-19所示,将字体

设置为“华文仿宋”,字体的大小设置为“小四”。



图2-18属性窗口图2-19【字体】对话框

用同样的方法设计其他的命令按钮,这些按钮的“(名称)”属性和Caption属性分别

设置为“基本设置”、“招聘管理”、“培训管理”、“职工日常管理”、“合同保险基金管理”、

“资料查询与导出”、“统计分析”、“数据维护”、“常用工具”、“系统帮助”、“恢复Excel

菜单”和“关闭自定义工具栏”。

最后将这些按钮都放置在系统界面的最左边,调整各个命令按钮之间的间距,并使之

对齐。

2-5-2
7?f¥??}
?
!9

上面设计的命令按钮,只是一个图形而已,还没有为其指定动作,即单击某按钮时,

要求执行什么程序,完成什么任务。

这里,我们要求当单击某个按钮时,该按钮的背景颜色要变为橘黄色,同时在自定义

菜单栏的下面创建相应的自定义工具栏命令按钮;而当单击其他按钮时,即该按钮失去焦

点时,按钮的背景颜色变为系统默认的灰色,在自定义菜单栏的下面创建新按钮对应的自

定义工具栏命令按钮。为此,需要分别对各个命令按钮设计Click事件程序和LostFocus

事件程序。各个命令按钮设计Click事件程序和LostFocus事件程序代码分别如下所示,保

存在工作表“首页”对象中:

DimmyArrayCaption,myArrayCommand''

定义模块级变量

''--------"系统管理"命令按钮的Click事件程序和LostFocus事件程序--------

PrivateSub系统管理_Click()

系统管理.BackColor=&HC0C0&

myArrayCaption=Array("单位信息","修改用户名","修改密码","设置系统参数",_

"系统提醒","数据库维护")



99



行政与人力资源管理应用案例详解

myArrayCommand=Array("

单位信息窗口

","

修改用户名窗口

","

修改密码窗口

","

设置

_

系统参数窗口

","

系统提醒窗口

","

数据库维护窗口

")

Call

系统自定义工具栏

(80)

EndSub

PrivateSub

系统管理

_LostFocus()



系统管理

.BackColor=&H8000000F

EndSub

''--------"

基本设置

"

命令按钮的

Click

事件程序和

LostFocus

事件程序

--------

PrivateSub

基本设置

_Click()



基本设置

.BackColor=&HC0C0&

myArrayCaption=Array("

部门设置

","

职位设置

","

职务设置

","

职称设置

","

文化程度

_

设置

","

职工类别设置

","

工作地点设置

","

合同类型设置

")

myArrayCommand=Array("

部门设置

","

职位设置

","

职务设置

","

职称设置

","

文化程度

_

设置

","

职工类别设置

","

工作地点设置

","

合同类型设置

")

Call系统自定义工具栏(80)

EndSub

PrivateSub基本设置_LostFocus()

基本设置.BackColor=&H8000000F

EndSub

''--------"招聘管理"命令按钮的Click事件程序和LostFocus事件程序--------

PrivateSub招聘管理_Click()

招聘管理.BackColor=&HC0C0&

myArrayCaption=Array("招聘申请管理","应聘人员档案","应聘人员初试","应聘人_

员面试")

myArrayCommand=Array("招聘申请管理窗口","应聘人员档案管理窗口","应聘人员初_

试管理窗口","应聘人员面试管理窗口")

Call系统自定义工具栏(80)

EndSub

PrivateSub招聘管理_LostFocus()

招聘管理.BackColor=&H8000000F

EndSub

''--------“培训管理”命令按钮的Click事件程序和LostFocus事件程序--------

PrivateSub培训管理_Click()

培训管理.BackColor=&HC0C0&

myArrayCaption=Array("培训计划管理","职工培训管理","培训教师管理","课程信_

息管理")

myArrayCommand=Array("培训计划管理窗口","职工培训管理窗口","培训教师管理窗_

口","课程信息管理窗口")

Call系统自定义工具栏(80)

EndSub

PrivateSub

培训管理_LostFocus()



培训管理.BackColor=&H8000000F

EndSub

''--------"

职工日常管理"命令按钮的Click事件程序和LostFocus事件程序--------

PrivateSub职工日常管理_Click()

职工日常管理.BackColor=&HC0C0&

myArrayCaption=Array("职工档案管理","内部调动管理","职工离退管理","证照资_

料管理","劳动技能管理")

myArrayCommand=Array("职工档案管理窗口","内部调动管理窗口","职工离退管理窗_

口","证照资料管理窗口","劳动技能管理窗口")

Call系统自定义工具栏(80)



100



人力资源管理系统的总体设计

2

EndSub

PrivateSub

职工日常管理

_LostFocus()



职工日常管理

.BackColor=&H8000000F

EndSub

''--------"

合同保险基金管理

"

命令按钮的

Click

事件程序和

LostFocus

事件程序

--------

PrivateSub

合同保险基金管理

_Click()



合同保险基金管理

.BackColor=&HC0C0&

myArrayCaption=Array("

职工合同管理

","

职工保险基金管理

")

myArrayCommand=Array("

职工合同管理窗口

","

职工保险基金管理窗口

")

Call

系统自定义工具栏

(100)

EndSub

PrivateSub

合同保险基金管理

_LostFocus()



合同保险基金管理

.BackColor=&H8000000F

EndSub

''--------“资料查询与导出”命令按钮的Click事件程序和LostFocus事件程序--------

PrivateSub资料查询与导出_Click()

资料查询与导出.BackColor=&HC0C0&

myArrayCaption=Array("招聘计划","应聘人员档案","初试信息","面试信息","职工_

档案","内部调动","离退职工","证照资料","劳动技能","培训计划","职工培训",_

"培训教师","培训课程","职工保险","职工合同")

myArrayCommand=Array("招聘计划查询","应聘人员档案查询","初试信息查询","面_

试信息查询","职工档案查询","内部调动查询","离退职工查询","证照资料查询","劳_

动技能查询","培训计划查询","职工培训查询","培训教师查询","培训课程查询",_

"职工保险查询","职工合同查询")

Call系统自定义工具栏(50)

EndSub

PrivateSub资料查询与导出_LostFocus()

资料查询与导出.BackColor=&H8000000F

EndSub

''--------"统计分析"命令按钮的Click事件程序和LostFocus事件程序--------

PrivateSub统计分析_Click()

统计分析.BackColor=&HC0C0&

myArrayCaption=Array("应聘人员统计分析","在职职工统计分析","离退职工统计分_

析")

myArrayCommand=Array("应聘人员统计分析窗口","在职职工统计分析窗口","离退职_

工统计分析窗口")

Call

系统自定义工具栏(80)

EndSub

PrivateSub

统计分析_LostFocus()



统计分析.BackColor=&H8000000F

EndSub

''--------"

数据维护"命令按钮的Click事件程序和LostFocus事件程序--------

PrivateSub

数据维护_Click()

数据维护.BackColor=&HC0C0&

myArrayCaption=Array("数据备份","数据还原","数据清理")

myArrayCommand=Array("数据备份","数据还原","

数据清理")

Call系统自定义工具栏(80)

EndSub

PrivateSub数据维护_LostFocus()



数据维护.BackColor=&H8000000F

EndSub



101



行政与人力资源管理应用案例详解

''--------"

常用工具

"

命令按钮的

Click

事件程序和

LostFocus

事件程序

--------

PrivateSub

常用工具

_Click()



常用工具

.BackColor=&HC0C0&

myArrayCaption=Array("

职工通讯录

","

计算器

","

电话区号查询

","

邮政编码查询

")

myArrayCommand=Array("

职工通讯录

","

计算器

","

区号编码

","

区号编码

")

Call

系统自定义工具栏

(80)

EndSub

PrivateSub

常用工具

_LostFocus()



常用工具

.BackColor=&H8000000F

EndSub

''--------"

系统帮助

"

命令按钮的

Click

事件程序和

LostFocus

事件程序

--------

PrivateSub

系统帮助

_Click()



系统帮助

.BackColor=&HC0C0&

myArrayCaption=Array("

系统使用说明

","

关于

")

myArrayCommand=Array("系统使用说明","关于")

Call系统自定义工具栏(80)

EndSub

PrivateSub系统帮助_LostFocus()

系统帮助.BackColor=&H8000000F

EndSub

''--------"系统菜单转换"命令按钮的Click事件程序和LostFocus事件程序--------

PrivateSub系统菜单转换_Click()

IfApplication.CommandBars.ActiveMenuBar.Name="人力资源管理"Then

''如果系统菜单的名称是"人力资源管理",

''就将按钮"系统菜单转换"

的Caption属性设置为"恢复Excel菜单"

系统菜单转换.Caption="恢复Excel菜单"

ElseIfApplication.CommandBars.ActiveMenuBar.Name="WorksheetMenu_

Bar"Then

''如果系统菜单的名称是Excel系统菜单名称"WorksheetMenuBar",

''就将按钮"系统菜单转换"的Caption属性设置为"恢复人力资源菜单"

系统菜单转换.Caption="恢复人力资源菜单"

EndIf

系统菜单转换.BackColor=&HC0C0&

If系统菜单转换.Caption="恢复Excel菜单"Then

Call恢复Excel系统菜单

系统菜单转换.Caption="恢复人力资源菜单"

ElseIf系统菜单转换.Caption="恢复人力资源菜单"Then

Call恢复人力资源管理系统菜单

系统菜单转换.Caption="恢复Excel菜单"

EndIf

''使按钮失去焦点

Sheet1.Range("A1").Select

EndSub

''--------"

关闭自定义工具栏"命令按钮的Click事件程序和LostFocus事件程序--------

PrivateSub

关闭自定义工具栏_Click()

OnErrorResumeNext

Application.CommandBars("系统工具栏").Delete

''使按钮失去焦点

Sheet1.Range("A1").Select

EndSub





102



人力资源管理系统的总体设计

2

在各个命令按钮的Click事件程序中,调用了一个名为“系统自定义工具栏”的带参

数的子程序,其功能就是创建自定义工具栏,程序代码如下所示(保存在“首页”工作表

对象中):

''--------

子程序

"

系统自定义工具栏

"

程序代码

--------

PublicSub

系统自定义工具栏

(myWidthAsInteger)

OnErrorResumeNext

''

定义变量:

mymenu

为命令按钮名称

,mynum

为命令按钮的添加位置

,myrun

为命令按钮指定宏



DimiAsInteger,newBarAsCommandBar,newButtonAsCommandBarButton

SetnewBar=CommandBars("

系统工具栏

")

IfnewBarIsNothingThen

SetnewBar=CommandBars.Add

WithnewBar

.Name="

系统工具栏

"

.Position=msoBarTop

.Visible=True

EndWith

Else

ForEachbarInnewBar.Controls

bar.Delete

Next

EndIf

SetnewBar=Nothing

''开始添加各个按钮

Fori=0ToUBound(myArrayCaption)

SetnewButton=CommandBars("系统工具栏").Controls.Add(_

Type:=msoControlButton,Before:=i+1)

WithnewButton

.Caption=myArrayCaption(i)

.OnAction=myArrayCommand(i)

.Width=myWidth

.Style=msoButtonCaption

.State=msoButtonDown

.BeginGroup=True

.Visible=True

EndWith

Nexti

SetnewButton=Nothing

EndSub

此外,在“系统菜单转换”命令按钮的Click事件程序中,调用了两个子程序“恢复

人力资源管理系统菜单”和“恢复Excel系统菜单”,这两个子程序保存在一个名为“系统

菜单转换程序”的标准模块中,其程序代码如下:

PublicSub

恢复人力资源管理系统菜单()

OnErrorResumeNext

Call自定义菜单

Call自定义工具栏重置

WithApplication

.DisplayFormulaBar=False

.DisplayStatusBar=False

.CommandBars("Formatting").Visible=False

.CommandBars("Standard").Visible=False



103



行政与人力资源管理应用案例详解

.Caption="

北京人和管理信息技术有限公司

"

EndWith

WithActiveWindow

.DisplayGridlines=False

.DisplayHeadings=False

.DisplayOutline=False

.DisplayZeros=False

.DisplayHorizontalScrollBar=False

.DisplayVerticalScrollBar=False

.DisplayWorkbookTabs=False

EndWith

Sheets("

用户名密码

").Visible=xlVeryHidden

Sheets("系统提醒参数").Visible=False

Sheets("单位信息").Visible=False

Sheets("首页").ProtectDrawingObjects:=True,Contents:=True,Scenarios:_

=True

Sheets("首页").EnableSelection=xlNoSelection

Sheets("首页").Activate

EndSub

PublicSub恢复Excel系统菜单()

OnErrorResumeNext

MenuBars("人力资源管理").Delete

CommandBars("WorksheetMenuBar").Controls("系统菜单转换").Delete

Application.CommandBars("系统工具栏").Delete

SetmyMenu=CommandBars("WorksheetMenuBar").Controls_

.Add(Type:=msoControlPopup,Before:=11)

myMenu.Caption="系统菜单转换"

WithmyMenu.Controls.Add(Type:=msoControlButton,Before:=1)

.Caption="恢复<人力资源管理系统>菜单"

.OnAction="恢复人力资源管理系统菜单"

EndWith

WithmyMenu.Controls.Add(Type:=msoControlButton,Before:=2)

.Caption="恢复Excel系统菜单"

.OnAction="

恢复Excel系统菜单"

EndWith

WithApplication

.DisplayFormulaBar=True

.DisplayStatusBar=True

.CommandBars("Formatting").Visible=True

.CommandBars("Standard").Visible=True

.Caption=""

EndWith

WithActiveWindow

.DisplayGridlines=True



104



人力资源管理系统的总体设计

2

.DisplayHeadings=True

.DisplayOutline=True

.DisplayZeros=True

.DisplayHorizontalScrollBar=True

.DisplayVerticalScrollBar=True

.DisplayWorkbookTabs=True

EndWith

Call

自定义工具栏重置



EndSub

而子程序“自定义工具栏重置”的程序代码如下,保存在标准模块“系统菜单转换程

序”中:

PublicSub

自定义工具栏重置

()

OnErrorResumeNext

Application.CommandBars("系统工具栏").Delete

Sheets("首页").系统管理.BackColor=&H8000000F

Sheets("首页").基本设置.BackColor=&H8000000F

Sheets("首页").招聘管理.BackColor=&H8000000F

Sheets("首页").培训管理.BackColor=&H8000000F

Sheets("首页").职工日常管理.BackColor=&H8000000F

Sheets("首页").合同保险基金管理.BackColor=&H8000000F

Sheets("首页").资料查询与导出.BackColor=&H8000000F

Sheets("首页").统计分析.BackColor=&H8000000F

Sheets("首页").数据维护.BackColor=&H8000000F

Sheets("首页").常用工具.BackColor=&H8000000F

Sheets("首页").系统帮助.BackColor=&H8000000F

Sheets("首页").系统菜单转换.BackColor=&H8000000F

EndSub

在命令按钮设计完毕后,对“首页”工作表进行保护。

2-5-31?ly  £¥rT

设计好了自定义命令按钮后,单击这些按钮,就会在系统自定义菜单栏的下面创建自

定义工具栏,分别如图2-20~图2-30所示。



图2-20“系统管理”自定义工具栏



105



行政与人力资源管理应用案例详解



图2-21“基本设置”自定义工具栏



图2-22“招聘管理”自定义工具栏图2-23“培训管理”自定义工具栏



图2-24“职工日常管理”自定义工具栏图2-25“合同保险基金管理”自定义工具栏



图2-26“资料查询与导出”自定义工具栏



106



人力资源管理系统的总体设计

2



图2-27“统计分析”自定义工具栏图2-28“数据维护”自定义工具栏



图2-29“常用工具”自定义工具栏图2-30“系统帮助”自定义工具栏

这样,用户如果要频繁地在某几个项目之间进行切换,比如要进行各种基本设置,只

要单击系统界面左边的【基本设置】按钮,创建“基本设置”自定义工具栏,就可以很方

便地通过单击自定义工具栏中的不同按钮,完成相应的操作。

2-6设计系统登录窗口

任何一个应用系统,都应该设计一个系统登录窗口,以保护应用系统的安全。在打开

应用系统时,系统将弹出登录窗口,只有输入了正确的用户名和密码,才能进入系统。

2-6-1¨??
á
?¥i

用户名和密码既可以直接编写在登录程序中,也可以单独设计一个用来存放用户名和

密码的工作表,后者则有较大的灵活性,可以随时增加用户名和密码,也可以随时更改用



107



行政与人力资源管理应用案例详解

户名和密码。本人力资源管理系统的登录用户名和密码的设置采用第二种方式。

用户名和密码保存在一个名为“用户名密码“的工作表中,其结构如图2-31所示。



图2-31“用户密码“工作表结构

在工作表的A列存放用户名,在B列存放与A列用户名对应的登录密码,B列的数

据格式要设置为文本;C列保存用户对用户名和密码的修改时间。该工作表被保护起来,

并被隐藏,以防其他用户修改本工作表中的用户名和密码,也有助于防止密码泄露。

此处隐藏工作表的方法不是普通的隐藏方法,而是在程序中通过属性设置的方法

对工作表进行隐藏,语句为:Sheets("用户名密码").Visible=xlVeryHidden。







2-6-2¨?¨
c3 g2
!9

用户登录窗口的结构如图2-32所示。用户登录窗口由1个用户窗体、2个标签、2个

文本框、4个命令按钮和1个框架组成,用户窗体和各个控件的功能及属性设置如下。



图2-32用户登录窗口结构

(1)用户窗体:名称重命名为“用户登录”,Caption属性也设置为“用户登录”。

(2)标签Label1和Label2:对两个文本框的功能进行说明,它们的Caption属性分别

设置为“用户名:”和“密码:”。

(3)文本框TextBox1:输入用户名。

(4)文本框TextBox2:输入密码,其PasswordChar属性设置为“”。

(5)命令按钮CommandButton1:输入正确的用户名和密码后,单击此按钮进入系统,

其Caption属性设置为“进入系统”,Default属性设置为True。

(6)命令按钮CommandButton2:取消登录,其Caption属性设置为“取消退出”。

(7)命令按钮CommandButton3:用于修改密码,其Caption属性设置为“修改密码”。

(8)命令按钮CommandButton4:用于修改用户名,其Caption属性设置为“修改用户

名”。

(9)框架Frame1:用于显示一个钥匙图标,其Picture属性设置为一个钥匙图。



108



人力资源管理系统的总体设计

2

2-6-3¨?¨
c3 g??}
?
!9

(1)首先为用户窗体设置Initialize事件,启动窗体后,将焦点移动到用户名文本框中,

程序代码如下:

PrivateSubUserForm_Initialize()

TextBox1=""

TextBox2=""

TextBox1.SetFocus

EndSub

(2)为“进入系统”命令按钮CommandButton1设置Click事件,单击此按钮,系统就

开始检查用户名和密码是否正确,如果正确,就进入系统,否则要求用户重新输入用户名

和密码。程序代码如下:

PrivateSubCommandButton1_Click()

OnErrorGoToerrorhandle

DimwsAsWorksheet

Setws=Worksheets("用户名密码")

IfTextBox1.Text=""Then''如果没有输入用户名,就将焦点移到用户名文本框

TextBox1.SetFocus:ExitSub

EndIf

IfTextBox2.Text=""Then''如果没有输入密码,就将焦点移到密码文本框

TextBox2.SetFocus:ExitSub

EndIf

''从“用户名密码”工作表中查询输入的用户名和密码

Fori=2Tows.Range("A65536").End(xlUp).Row

Ifws.Range("A"&i).Text=TextBox1.Text_

Andws.Range("B"&i).Text=TextBox2.TextThen

''如果输入的用户名和密码都正确,就进行下面的操作

Sheets("首页").Unprotect''撤销对"首页"工作表的保护

Sheets("首页").Range("A29")="当前操作员"

''在单元格A30显示本次操作用户的名字

Sheets("首页").Range("A30")=TextBox1.Value

Sheets("首页").Protect''保护"首页"工作表

Unload用户登录''关闭用户登录窗口

Call自定义菜单''创建自定义菜单

Call

创建数据库''创建各个数据库

Call更新年龄数据''更新数据库中职工的年龄数据

IfWorksheets("系统提醒参数").Range("C2")="是"_

OrWorksheets("系统提醒参数").Range("C3")="是"_

OrWorksheets("系统提醒参数").Range("C4")="是"Then



系统提醒.Show''打开系统提醒窗口

EndIf

ExitSub

ElseIfws.Range("A"&i).Text=TextBox1.Text_

Andws.Range("B"&i).Text<>TextBox2.TextThen

''

输入的用户名正确但密码错误

MsgBox"

密码错误!",vbCritical,"警告"

TextBox2="":TextBox2.SetFocus:ExitSub

ElseIfws.Range("A"&i).Text<>TextBox1.Text_

Andws.Range("B"&i).Text=TextBox2.TextThen



109



行政与人力资源管理应用案例详解

''

输入密码正确但用户名错误



MsgBox"

用户名错误!

",vbCritical,"

警告

"

TextBox1="":TextBox1.SetFocus:ExitSub

EndIf

Nexti

MsgBox"

用户名和密码不存在!

",vbCritical,"

警告

"

TextBox1="":TextBox2="":TextBox1.SetFocus:Unload

用户登录



errorhandle:

ThisWorkbook.CloseSaveChanges:=False

EndSub

(3)为“取消退出”命令按钮CommandButton2设置Click事件,单击此按钮,取消进

入系统的操作。程序代码如下:

PrivateSubCommandButton2_Click()

Application.Caption=""

ThisWorkbook.CloseSaveChanges:=False

EndSub

(4)为“修改密码”命令按钮CommandButton3设置Click事件,单击此按钮,系统就

打开“修改密码”窗口,以方便用户修改密码。程序代码如下:

PrivateSubCommandButton3_Click()

修改密码.Show

EndSub

(5)为“修改用户名”命令按钮CommandButton4设置Click事件,单击此按钮,系统

就打开“修改用户名”窗口,以方便用户修改用户名。程序代码如下:

PrivateSubCommandButton4_Click()

修改用户名.Show

EndSub

当打开“人力资源管理系统.xls”工作簿文件后,在进入系统之前,会弹出用户登录的

对话框,如图2-33所示。



图2-33用户登录窗口

用户只有输入正确的用户名和密码,才能进入系统。如果用户输入了正确的用户名但



110



人力资源管理系统的总体设计

2

输入了错误的密码,或者输入了错误的用户名但输入了正确的密码,系统就会弹出分别如

图2-34、图2-35所示的【警告】对话框,提醒用户输入正确的用户名或密码。

如果用户输入了不存在的用户名和密码,系统绘弹出图2-36所示的【警告】对话框,

单击【确定】按钮后,系统会自动关闭。



图2-34密码错误图2-35用户名错误图2-36用户名和密码不存在

如何用户想要修改登录密码或登录用户名,可以单击登录窗口中的【修改密码】按钮

或【修改用户名】按钮,也可以执行【系统管理】菜单中的【修改密码】命令或【修改用

户名】命令,打开【修改密码】窗口或【修改用户名】窗口,对密码或用户名进行修改。

有关【修改密码】窗口和【修改用户名】窗口的设计将在下章进行介绍。

2-7为工作簿对象指定事件

为了在打开“人力资源管理系统.xls”工作簿文件时,对系统工作簿进行必要的重新设

置,同时启动登录窗口,需要为工作簿对象指定Open事件。而在关闭“人力资源管理系统.xls”

工作簿文件时,需要恢复Excel的各项默认值,因此需要为工作簿对象指定BeforeClose事

件。此外,在系统操作过程中,用户还可以在“人力资源管理系统”自定义菜单与Excel菜

单之间进行转换,因此,还需要为工作簿对象指定Activate事件和Deactivate事件。

2-7-11yT?`·?Open
Yq

为工作簿对象指定Open事件的目的,是在打开“人力资源管理系统.xls”工作簿文件

时,对系统工作簿进行必要的重新设置,同时启动登录窗口。工作簿对象的Open事件程

序代码如下:

PrivateSubWorkbook_Open()

''

将取消键设置无效

,

以防止其他用户按【

Ctrl+Break

】键终止程序运行



Application.EnableCancelKey=xlDisabled

Sheets("用户名密码").Visible=xlVeryHidden''将“用户名密码”工作表特殊隐藏

''

将“系统提醒参数”工作表和“单位信息”工作表普通隐藏

Sheets("系统提醒参数").Visible=False

Sheets("单位信息").Visible=False

''设置工作簿窗口的选项

WithActiveWindow

.DisplayHeadings=False''

不显示行列标题

.DisplayOutline=False''不显示分级符号

.DisplayZeros=False''

不显示零值

.DisplayWorkbookTabs=False''

不显示工作表标签

.DisplayHorizontalScrollBar=False''

不显示水平滚动条

.DisplayVerticalScrollBar=False''

不显示垂直滚动条

EndWith

WithApplication



111



行政与人力资源管理应用案例详解

.CommandBars("Formatting").Visible=False''

不显示格式工具栏



.CommandBars("Standard").Visible=False''

不显示标准工具栏



.DisplayFormulaBar=False''

不显示公式编辑栏



.DisplayStatusBar=False''

不显示状态栏



''

设置在

MicrosoftExcel

主窗口标题栏中的名称



.Caption="

北京人和管理信息技术有限公司

"

EndWith

''

保护

"

首页

"

工作表



Sheets("

首页

").ProtectDrawingObjects:=True,Contents:=True,Scenarios:_

=True

Sheets("

首页

").EnableSelection=xlNoSelection

Sheets("

首页

").Activate''

激活“首页”工作表



Sheets("

首页

").

系统菜单转换

.Caption="

恢复

Excel

菜单

"



用户登录

.Show''

启动登录窗口



EndSub

2-7-21yT?`·?BeforeClose
Yq

为工作簿对象指定BeforeClose事件的目的,是在关闭“人力资源管理系统.xls”工作

簿文件时,删除对工作簿对象的一切设置,恢复Excel默认值,同时在关闭工作簿时不进

行保存。工作簿对象的BeforeClose事件程序代码如下:

PrivateSubWorkbook_BeforeClose(CancelAsBoolean)

OnErrorResumeNext

''调用子程序"恢复Excel系统菜单",恢复Excel系统菜单

Call系统菜单转换程序.恢复Excel系统菜单

''删除自定义菜单"系统菜单转换"

Application.CommandBars("WorksheetMenuBar").Controls("系统菜单转换").Delete

MenuBars("人力资源管理").Delete''删除自定义菜单“人力资源管理”

Application.CommandBars("系统工具栏").Delete''删除自定义工具栏“系统工具栏”

ThisWorkbook.CloseSaveChanges:=False''关闭工作簿,不进行保存

EndSub

2-7-31yT?`·?Activate
Yq

为工作簿对象指定Activate事件的目的,是在激活“人力资源管理系统.xls”工作簿时,

恢复“人力资源管理系统”的一切设置。工作簿对象的Activate事件程序代码如下:

PrivateSubWorkbook_Activate()

Call

自定义工具栏重置''调用子程序"自定义工具栏重置",设置自定义工具栏

''调用子程序"恢复人力资源管理系统菜单",恢复人力资源管理系统菜单

Call

系统菜单转换程序.恢复人力资源管理系统菜单

EndSub

2-7-41yT?`·?Deactivate
Yq

为工作簿对象指定Deactivate事件的目的,是在打开其他工作簿文件时,删除对工作

簿的一切设置,恢复Excel默认值。工作簿对象的Deactivate事件程序代码如下:

PrivateSubWorkbook_Deactivate()

OnErrorResumeNext

''删除自定义菜单"系统菜单转换"

Application.CommandBars("WorksheetMenuBar").Controls("系统菜单转换").Delete



112



人力资源管理系统的总体设计

2

MenuBars("

人力资源管理

").Delete''

删除自定义菜单“人力资源管理”



Application.CommandBars("

系统工具栏

").Delete''

删除自定义工具栏“系统工具栏”



EndSub

2-8创建人事管理数据库

人力资源的所有信息资料都保存在一个名为“人事管理.mdb”的Access数据库文件中。

该数据库文件包括有“部门设置”等27个数据表,分门别类地保存企业的大部分人力资源

信息资料。数据库文件及各个数据表既可以人工创建,也可以由系统自动创建。本系统用

系统自动创建的方式。本节主要介绍数据库文件“人事管理.mdb”的结构及其自动创建程

序的设计,关于各个数据表的具体结构设计将在后面的相关章节中进行详细介绍。

2-8-1|
Y5 ?
? o¥2

人事管理数据库文件“人事管理.mdb”的结构如图2-37所示,该数据库文件包含有“部

门设置”等27个数据表,各个数据表的功能介绍如下:



图2-37数据库“人事管理.mdb”的结构

1.基本设置子模块涉及到的数据表

(1)部门设置:保存企业的各个部门名称及部门负责人姓名。

(2)职位类别设置:保存企业的职位类别名称。

(3)职务类别设置:保存职工的职务类别名称。

(4)职称类别设置:保存职工的职称类别名称。

(5)文化程度设置:保存职工的文化程度名称。

(6)工作地点设置:保存企业某些职位的工作地点名称。

(7)合同类型设置:保存职工的合同类型名称。

(8)职工类别设置:保存职工的类别名称

2.招聘管理子模块涉及到的数据表

(1)招聘申请信息:保存企业的招聘申请信息资料。



113



行政与人力资源管理应用案例详解

(2)应聘人员基本信息:保存应聘人员的基本信息资料。

(3)应聘人员教育信息:保存应聘人员的教育信息资料。

(4)应聘人员工作信息:保存应聘人员的工作经历信息资料。

(5)应聘人员初试信息:保存应聘人员的初试信息资料。

(6)应聘人员面试信息:保存应聘人员的面试信息资料。

3.培训管理子模块涉及到的数据表

(1)培训计划信息:保存企业的培训计划信息资料。

(2)职工培训信息:保存职工的培训信息资料。

(3)培训教师信息:保存培训教师的相关信息资料。

(4)培训课程信息:保存培训课程的相关信息资料。

4.职工管理子模块涉及到的数据表

(1)职工基本信息:保存职工的基本信息资料。

(2)职工教育信息:保存职工的教育信息资料。

(3)职工工作信息:保存职工的工作经历信息资料。

(4)职工调动信息:保存职工的内部调动信息资料。

(5)职工离退信息:保存离退职工的信息资料。

(6)职工证照信息:保存职工的各种证照信息资料。

(7)职工技能信息:保存职工的各种劳动技能信息资料。

5.合同管理子模块涉及到的数据表

职工合同信息:保存职工的劳动合同信息资料。

6.保险基金管理子模块涉及到的数据表

职工保险基金信息:保存职工的各种社会保险和住房公积金的有关信息资料。

2-8-21?7y|
Y5 ?
? o

上述的数据库文件及其各个数据表,均由系统自动创建,即在打开系统文件时,如果

系统文件所在的文件夹没有数据库文件“人事管理.mdb”,那么系统就自动创建该文件,

然后再自动检查数据库文件中是否有上述的数据表,如果没有,系统就根据用户事先设置

的数据表格式创建数据表。

自动创建数据库及其数据表是由一个名为“创建数据库”的子程序完成的,其程序代

码如下所示:

PublicSub创建数据库()

DimcnnAsADODB.Connection''定义Connection对象变量

DimmydataAsString''定义字符串变量

DimcmdAsADODB.Command''定义Command对象变量

mydata=ThisWorkbook.Path&"\

人事管理.mdb"

''利用FSO对象模型检查是否有数据库文件"人事管理.mdb"

Iffs.FileExists(mydata)=FalseThen

MsgBox"

还没有人事管理数据库!"_

&"

系统将自动创建人事管理数据库!",vbExclamation,"注意"

Setmyaccess=CreateObject("Access.Application")

myaccess.NewCurrentDatabasemydata

myaccess.CloseCurrentDatabase



114



人力资源管理系统的总体设计

2

Setmyaccess=Nothing

EndIf

Setfs=Nothing

''

建立与数据库

"

人事管理

.mdb"

的连接



Setcnn=NewADODB.Connection

Withcnn

.Provider="microsoft.jet.oledb.4.0"

.Openmydata

EndWith

Setcmd=NewADODB.Command

Setcmd.ActiveConnection=cnn

IfTableExists("

部门设置

",cnn)=FalseThen''

创建部门设置数据表



cmd.CommandText="createtable

部门设置

(

部门名称

text(10),"_

&"

部门负责人

text(10))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("文化程度设置",cnn)=FalseThen''创建文化程度设置数据表

cmd.CommandText="createtable文化程度设置(文化程度text(10))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("职工类别设置",cnn)=FalseThen''创建职工类别设置数据表

cmd.CommandText="createtable职工类别设置(职工类别text(10))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("职称类别设置",cnn)=FalseThen''创建职称类别设置数据表

cmd.CommandText="createtable职称类别设置(职称类别text(10))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("职务类别设置",cnn)=FalseThen''创建职务类别设置数据表

cmd.CommandText="createtable职务类别设置(职务类别text(10))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("职位类别设置",cnn)=FalseThen''创建职位类别设置数据表

cmd.CommandText="createtable职位类别设置(职位text(10))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("工作地点设置",cnn)=FalseThen''创建工作地点设置数据表

cmd.CommandText="createtable工作地点设置(工作地点text(20))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("合同类型设置",cnn)=FalseThen''创建合同类别设置数据表

cmd.CommandText="createtable

合同类型设置(合同类型text(10))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("职工基本信息",cnn)=FalseThen''

创建职工基本信息数据表

cmd.CommandText="createtable职工基本信息(职工编号text(5),"_

&"

所属部门text(10),姓名text(10),性别text(1),职务text(10),"_

&"职称text(10),学历text(10),民族text(12),籍贯text(40),"_

&"

健康状况text(5),婚姻状况text(2),出生日期date,年龄int,"_

&"

身份证号码text(18),手机号码text(12),电子邮箱text(50),"_

&"

家庭地址text(40),邮政编码text(6),家庭电话text(12),"_



115



行政与人力资源管理应用案例详解

&"

联系人

text(10),

与联系人关系

text(5),

联系人电话

text(12),"_

&"

备注

text(50),

照片

text(20))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("

职工教育信息

",cnn)=FalseThen''

创建职工教育信息数据表



cmd.CommandText="createtable

职工教育信息

(

职工编号

text(5),"_

&"

所属部门

text(10),

姓名

text(10),

教育序号

int,

学校

text(40),"_

&"

所学专业

text(30),

学历

text(10),

入学时间

date,

毕业时间

date,"_

&"

学制年限

int,

备注

text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("

职工工作信息

",cnn)=FalseThen''

创建职工工作信息数据表



cmd.CommandText="createtable

职工工作信息

(

职工编号

text(5),"_

&"

所属部门

text(10),

姓名

text(10),

工作序号

int,"_

&"工作单位text(40),从事工作text(40),担任职务text(10),"_

&"起始时间date,终止时间date,证明人text(10),备注text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("职工调动信息",cnn)=FalseThen''创建职工调动信息数据表

cmd.CommandText="createtable职工调动信息(职工编号text(5),"_

&"姓名text(10),性别text(1),新部门text(10),原部门text(10),"_

&"调动日期date,

调动原因text(20),备注text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("职工离退信息",cnn)=FalseThen''创建职工离退信息数据表

cmd.CommandText="createtable职工离退信息(原编号text(5),"_

&"姓名text(10),性别text(1),原部门text(10),离退类别text(10),"_

&"离退时间date,离退费用single,备注text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("职工证照信息",cnn)=FalseThen''创建职工证照信息数据表

cmd.CommandText="createtable职工证照信息(职工编号text(5),"_

&"姓名text(10),性别text(1),所属部门text(10),"_

&"证照名称text(20),证照编号text(20),证照类型text(10),"_

&"取证日期date,有效日期date,备注text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("职工技能信息",cnn)=FalseThen''创建职工技能信息数据表

cmd.CommandText="createtable

职工技能信息(职工编号text(5),"_

&"

姓名text(10),性别text(1),所属部门text(10),技能名称text(20),"_

&"

技能级别text(10),取得日期date,备注text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("招聘申请信息",cnn)=FalseThen''创建招聘申请信息数据表

cmd.CommandText="createtable招聘申请信息(申请编号text(5),"_

&"申请部门text(10),申请职位text(10),工作地点text(20),"_

&"招聘人数int,工作性质text(2),性别要求text(2),招聘日期date,"_

&"

招聘方式text(2),学历要求text(10),专业要求text(10),"_

&"外语要求text(10),计算机要求text(20),相关工作经验text(20),"_

&"

费用预算single,备注text(50),审批情况text(3))"

cmd.Execute,,adCmdText



116



人力资源管理系统的总体设计

2

EndIf

IfTableExists("

应聘人员基本信息

",cnn)=FalseThen''

创建应聘人员基本信息数据表



cmd.CommandText="createtable

应聘人员基本信息

(

顺序号

text(5),"_

&"

应聘部门

Text(10),

应聘职位

text(10),

工作地点

text(20),"_

&"

姓名

text(10),

性别

text(1),

籍贯

text(40),

民族

text(12),"_

&"

健康状况

text(5),

婚姻状况

text(2),

出生日期

date,

年龄

int,"_

&"

身份证号码

text(18),

最高学历

text(10),

毕业学校

text(40),"_

&"

专业

text(30),

手机号码

text(12),

电子邮箱

text(50),"_

&"

家庭地址

text(40),

邮政编码

text(6),

家庭电话

text(12),"_

&"

备注

text(50),

照片

text(20))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("应聘人员教育信息",cnn)=FalseThen''创建应聘人员教育信息数据表

cmd.CommandText="createtable应聘人员教育信息(顺序号text(5),"_

&"应聘部门text(10),姓名text(10),教育序号int,毕业学校text(40),"_

&"专业text(30),学历text(10),入学时间date,毕业时间date,"_

&"学制年限int,备注text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("应聘人员工作信息",cnn)=FalseThen''创建应聘人员工作信息数据表

cmd.CommandText="createtable应聘人员工作信息(顺序号text(5),"_

&"应聘部门text(10),姓名text(10),工作序号int,工作单位text(40),"_

&"从事工作text(40),担任职务text(10),起始时间date,终止时间date,"_

&"证明人text(10),备注text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("应聘人员初试信息",cnn)=FalseThen''创建应聘人员初试信息数据表

cmd.CommandText="createtable应聘人员初试信息(顺序号text(5),"_

&"姓名text(10),性别text(1),应聘部门text(10),应聘职位text(10),"_

&"工作地点text(20),初试时间date,初试地点text(20),初试官_

text(10),"_

&"业务能力text(20),外语水平text(20),计算机水平text(20),"_

&"综合评分single,是否通过text(1),"_

&"

备注text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("

应聘人员面试信息",cnn)=FalseThen''创建应聘人员面试信息数据表

cmd.CommandText="createtable应聘人员面试信息(顺序号text(5),"_

&"

姓名text(10),性别text(1),应聘部门text(10),应聘职位text(10),"_

&"

工作地点text(20),初试评分single,面试时间date,面试地点text(20),"_

&"面试官text(10),外表形象text(20),健康状况text(20),"_

&"

领悟反应能力text(20),职务了解程度text(10),业务能力text(20),"_

&"外语水平text(20),计算机水平text(20),"_

&"综合评分single,备注text(50))"



117



行政与人力资源管理应用案例详解

cmd.Execute,,adCmdText

EndIf

IfTableExists("

培训计划信息

",cnn)=FalseThen''

创建培训计划信息数据表



cmd.CommandText="createtable

培训计划信息

(

申请部门

text(10),"_

&"

培训内容

text(20),

培训目的

text(20),

培训课程

text(20),"_

&"

培训起始时间

date,

培训终止时间

date,"_

&"

培训地点

text(20),

培训人数

int,

培训费用

single,

备注

text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("

培训教师信息

",cnn)=FalseThen''

创建培训教师信息数据表



cmd.CommandText="createtable

培训教师信息

(

姓名

text(10),

性别

text_

(1),"_

&"教授课程text(20),单位text(40),联系电话text(12),备注text_

(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("职工培训信息",cnn)=FalseThen''创建职工培训信息数据表

cmd.CommandText="createtable职工培训信息(职工编号text(5),"_

&"姓名text(10),性别text(1),所属部门text(10),培训课程text(20),"_

&"培训地点text(20),培训起始时间date,培训终止时间date,"_

&"培训费用single,培训教师text(10),培训成绩single,备注text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("培训课程信息",cnn)=FalseThen''

创建培训课程信息数据表

cmd.CommandText="createtable培训课程信息(课程编号text(10),"_

&"课程名称text(20),所用教材text(30),课时数int,"_

&"开课时间date,结课时间date,开课地点text(20),"_

&"课程描述text(30),课程评价text(30),备注text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("职工合同信息",cnn)=FalseThen''创建职工合同信息数据表

cmd.CommandText="createtable

职工合同信息(职工编号text(5),"_

&"姓名text(10),性别text(1),所属部门text(10),合同编号text(13),"_

&"合同类型text(2),合同起始日date,合同终止日date,"_

&"

合同期限single,试用期int,备注text(50))"

cmd.Execute,,adCmdText

EndIf

IfTableExists("

职工保险基金信息",cnn)=FalseThen''创建职工保险基金信息数据表

cmd.CommandText="createtable

职工保险基金信息(职工编号text(5),"_

&"

姓名text(10),性别text(1),所属部门text(10),"_

&"养老保险号text(30),养老保险费single,"_

&"

失业保险号text(30),失业保险费single,"_

&"医疗保险号text(30),医疗保险费single,"_

&"工伤保险号text(30),工伤保险费single,"_



118



人力资源管理系统的总体设计

2

&"

生育保险号

text(30),

生育保险费

single,"_

&"

住房公积金号

text(30),

住房公积金费

single)"

cmd.Execute,,adCmdText

EndIf

''

关闭并清除对象变量

cnn



cmd

cnn.Close

Setcnn=Nothing

Setcmd=Nothing

EndSub

在上面的创建数据库文件及数据表的程序中,调用了一个带参数的自定义函数

TableExists,该自定义函数用来检查数据库文件中是否有某个数据表,如果有,返回True,

如果没有,则返回False。该自定义函数的程序代码如下:

''检查是否有数据表的子程序

PublicFunctionTableExists(mytableAsString,myCnnAsADODB.Connection)_

AsBoolean

DimrstAsADODB.Recordset

TableExists=False

Setrst=myCnn.OpenSchema(adSchemaTables)

DoUntilrst.EOF

IfLCase(rst!Table_Name)=LCase(mytable)Then

TableExists=True

GoTomyExit

EndIf

rst.MoveNext

Loop

myExit:

rst.Close

Setrst=Nothing

EndFunction

子程序“创建数据库”和自定义函数TableExists均保存在一个名为“创建数据库程序”

的标准模块中。

2-9更新数据表中的年龄数据

由于在输入应聘人员和在职职工的基本信息时(如何输入这些基本信息,将在后面的

章节中进行介绍),将应聘人员和在职职工的年龄数据作为一个存在的数据保存到数据表

中,,即年龄数据是输入应聘人员和在职职工基本信息时的日期减去出生日期得到的数据,

这样,当过了一年后,应聘人员和在职职工的年龄实际数据就变为输入基本信息时的年龄

数据加1,但由于没有对基本信息数据表中的年龄数据进行更新,它仍是当初输入基本信

息时的数据。因此,需要不断对应聘人员和在职职工基本信息数据表中的年龄数据进行更

新,以免影响以后各年的数据处理和分析。

对应聘人员和在职职工基本信息数据表中的年龄数据进行更新,可以在启动人力资源

管理系统时就自动进行更新。在“用户登录”窗体中,有一个语句“Call更新年龄数据”,



119



行政与人力资源管理应用案例详解

就是调用一个名为“更新年龄数据”的子程序,对应聘人员和在职职工基本信息数据表中

的年龄数据进行自动更新,不需要人工进行干预。子程序“更新年龄数据”的程序代码如

下所示,它保存在一个名为“更新年龄程序”的标准模块中:

PublicSub

更新年龄数据

()

OnErrorResumeNext

DimmysqlAsString

DimcnnAsADODB.Connection

DimrsAsADODB.Recordset

''

建立与数据库

"

人事管理

.mdb"

的连接



Setcnn=NewADODB.Connection

Withcnn

.Provider="microsoft.jet.oledb.4.0"

.OpenThisWorkbook.Path&"\

人事管理

.mdb"

EndWith

''更新应聘人员基本信息数据表中的年龄数据

mysql="update应聘人员基本信息set年龄=year(now())-year(出生日期)"

Setrs=NewADODB.Recordset

rs.Openmysql,cnn,adOpenKeyset,adLockOptimistic

''更新在职职工基本信息数据表中的年龄数据

mysql="update职工基本信息set年龄=year(now())-year(出生日期)"

Setrs=NewADODB.Recordset

rs.Openmysql,cnn,adOpenKeyset,adLockOptimistic

Setrs=Nothing

cnn.Close

Setcnn=Nothing

EndSub

2-10几个需要设置的引用项目

人力资源管理系统的运行要使用ADO数据库查询技术,并且用户可能要通过系统打

开Access数据库和Word文档,同时系统的编程还使用了FSO对象模型,因此,为了使系

统能够正常工作,需要引用下面的几个主要项目:

zMicrosoftADOExt2.5forDDLandSecurity或更高版本

zMicrosoftActiveDataObjects(Multi-dimensional)2.5Library或更高版本

zMicrosoftActiveDataObjectsRecordset2.5Library或更高版本

zMicrosoftActiveDataObjects2.5Library或更高版本

zMicrosoftJetandReplicationObjects2.5Library或更高版本

zMicrosoftAccess9.0ObjectLibrary(对Word2000)

或MicrosoftAccess10.0ObjectLibrary(对Word2002)

或MicrosoftAccess10.0ObjectLibrary(对Word2003)

zMicrosoftWord9.0ObjectLibrary(对Word2000)

或MicrosoftWord10.0ObjectLibrary(对Word2002)

或MicrosoftWord11.0ObjectLibrary(对Word2003)

zMicrosoftScriptingRuntime

z其他引用项目,如图2-38所示。



120



人力资源管理系统的总体设计

2



图2-38几个需要引用的项目

2-11定义公共变量

在此人力资源管理系统的各个窗体事件程序中,要使用一些公共变量,它们的定义如

下:

PubliccnnSearchAsADODB.Connection''建立查询的连接变量

PublicrsSearchAsADODB.Recordset''查询出的数据集变量

PublicmySearchShowAsBoolean''判断窗体上显示的是查询数据或还是正常数据

PublicmyBaseItemAsString''基础设置判断变量

PublicmySearchItemsAsString''判断是单击那个窗口的查询按钮

这些公共变量保存在一个名为“公共变量”的标准模块中。



121

献花(0)
+1
(本文系尚文崇德馆首藏)