朱潔蘭
摘要:該文介紹了使用ExcelVBA工具解決人力資源歷史數(shù)據(jù)保存問(wèn)題的過(guò)程,首先設(shè)計(jì)了兩項(xiàng)程序功能,分別是保存當(dāng)前數(shù)據(jù)源為歷史數(shù)據(jù)、恢復(fù)歷史數(shù)據(jù)到當(dāng)前數(shù)據(jù)源;然后給出程序的實(shí)現(xiàn)過(guò)程詳細(xì)介紹,從導(dǎo)入數(shù)據(jù)、設(shè)計(jì)用戶(hù)界面到編碼。之后給出了程序的代碼展示。最后指出程序可改進(jìn)之處是可以提供與ERP或HR系統(tǒng)是數(shù)據(jù)庫(kù)接口,并且擴(kuò)展歷史數(shù)據(jù)的統(tǒng)計(jì)分析功能。
關(guān)鍵詞:人力資源;歷史數(shù)據(jù);ExcelVBA
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)01-0218-03
各個(gè)單位或企業(yè)的人力資源數(shù)據(jù)包括的內(nèi)容非常廣泛,涉及到勞資、人事、培訓(xùn)、社保、檔案等大量數(shù)據(jù)信息。隨著時(shí)間的增長(zhǎng),歷史信息不斷積累,HR部門(mén)在處理歷史數(shù)據(jù)的保存和再調(diào)用問(wèn)題的時(shí)候,如果處理不當(dāng)會(huì)造成歷史數(shù)據(jù)丟失或無(wú)效,有些歷史數(shù)據(jù)即使保存了也會(huì)出現(xiàn)查找困難的情況。因?yàn)槿肆Y源數(shù)據(jù)大部分會(huì)用Excel軟件保存和處理,作者嘗試了進(jìn)行ExcelVBA編程,來(lái)解決人力資源歷史數(shù)據(jù)保存問(wèn)題。
1 ExcelVBA編程簡(jiǎn)介
VBA是擴(kuò)展微軟office辦公軟件功能的編程利器,其中ExcelVBA編程最為廣泛。國(guó)內(nèi)外有很多專(zhuān)門(mén)討論ExcelVBA編程問(wèn)題的論壇和個(gè)人網(wǎng)站。在商業(yè)化的Excel軟件培訓(xùn)中,ExcelVBA編程也是高級(jí)課程的必講內(nèi)容。
ExcelVBA是結(jié)合excel來(lái)處理一些表格數(shù)據(jù)的。它最大的優(yōu)點(diǎn)就是可以通過(guò)用程序代碼來(lái)控制一些有規(guī)律,重復(fù)性的需要手工來(lái)完成的工作,提高工作效率的目的。它的編程環(huán)境是內(nèi)嵌在Excel軟件之中的,只要在Excel軟件的“開(kāi)發(fā)工具”菜單中調(diào)用就可以了,使用起來(lái)非??旖莘奖恪?/p>
2 程序功能結(jié)構(gòu)圖
作者在本程序中設(shè)計(jì)了兩項(xiàng)自動(dòng)化功能。第一項(xiàng)是保存當(dāng)前數(shù)據(jù)源為歷史數(shù)據(jù),通過(guò)復(fù)制“數(shù)據(jù)源”工作表到新建工作表,并把新建工作表用當(dāng)前日期命名,表示新建工作表為當(dāng)前日期的歷史數(shù)據(jù),當(dāng)“數(shù)據(jù)源”工作表發(fā)生變動(dòng)時(shí),歷史數(shù)據(jù)不受影響;第二項(xiàng)是恢復(fù)歷史數(shù)據(jù)到當(dāng)前數(shù)據(jù)源,如果當(dāng)前數(shù)據(jù)源出錯(cuò),需要恢復(fù)到某一時(shí)刻的歷史數(shù)據(jù)時(shí),只要輸入某一個(gè)歷史時(shí)期,就可以恢復(fù)到當(dāng)時(shí)的“源數(shù)據(jù)”。
用戶(hù)使用該Excel模板的VBA功能時(shí),只要在發(fā)生“源數(shù)據(jù)”變動(dòng)時(shí),點(diǎn)擊第一項(xiàng)保存功能的“確定”按鈕即可,這樣就可以保存所有的變動(dòng)前的歷史數(shù)據(jù)了。
3 程序?qū)崿F(xiàn)過(guò)程
3.1 導(dǎo)入數(shù)據(jù)
在Excel軟件中導(dǎo)入人力資源的數(shù)據(jù),一般會(huì)包含企業(yè)員工的姓名、性別、出生日期、年齡、入職日期、工作年限、學(xué)歷、職稱(chēng)、部門(mén)、職務(wù)、工資級(jí)別等基本信息。導(dǎo)入后把當(dāng)前工作表名稱(chēng)修改為“源數(shù)據(jù)”。
3.2 設(shè)計(jì)用戶(hù)界面
在Excel軟件的第一個(gè)工作表中設(shè)計(jì)用戶(hù)界面,在用戶(hù)界面中插入兩個(gè)“確定”按鈕,再分別為它們指定相應(yīng)的宏代碼,如圖1所示。
3.3 編寫(xiě)代碼
本Excel模板要編寫(xiě)兩個(gè)宏代碼,都是由單擊選項(xiàng)按鈕觸發(fā)事件過(guò)程,兩個(gè)過(guò)程的程序流程分別如下:
1) 用戶(hù)在用戶(hù)界面點(diǎn)擊第一項(xiàng)“保存當(dāng)前數(shù)據(jù)源為歷史數(shù)據(jù)”的“確定”按鈕,觸發(fā)其對(duì)應(yīng)的事件過(guò)程。
(2) 搜索已有的工作表名稱(chēng),查看是否有以當(dāng)前日期命名的工作表。如果有就刪除該工作表。
(3) 復(fù)制“源數(shù)據(jù)”工作表。
(4) 在工作簿的最后位置新建工作表,粘貼“源數(shù)據(jù)”工作表。
(5) 把新建工作表的名稱(chēng)改為當(dāng)前日期。\&2. 恢復(fù)歷史數(shù)據(jù)到當(dāng)前數(shù)據(jù)源\&(6) 用戶(hù)在用戶(hù)界面點(diǎn)擊第二項(xiàng)“恢復(fù)歷史數(shù)據(jù)到當(dāng)前數(shù)據(jù)源”的“確定”按鈕,觸發(fā)其對(duì)應(yīng)的事件過(guò)程。
(7) 彈出輸入對(duì)話框,要求用戶(hù)輸入一個(gè)歷史時(shí)期。
(8) 搜索已有的工作表名稱(chēng),查看是否有以輸入的歷史日期命名的工作表。如果有就復(fù)制該工作表,如果沒(méi)有就退出程序。
(9) 粘貼到“源數(shù)據(jù)”工作表。\&]
3.4 程序代碼展示
本Excel模板的兩個(gè)宏代碼分別如下:
Sub 按鈕1_Click()
'以下定義工作表、變量的名稱(chēng)
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
'以下復(fù)制源數(shù)據(jù)表到新建工作表,并以當(dāng)天日期命名
Sheets("源數(shù)據(jù)").Select
Sheets("源數(shù)據(jù)").Copy After:=Sheets(n)
n = Worksheets.Count
Sheets(n).Name = CStr(newsheet_name)
End Sub
Sub 按鈕2_Click()
'請(qǐng)用戶(hù)輸入要恢復(fù)的歷史數(shù)據(jù)的時(shí)間
Dim inputsheet_name, defaulttime
defaulttime = Date
inputsheet_name = InputBox(Message, "要恢復(fù)的歷史數(shù)據(jù)的時(shí)間", defaulttime, 100, 100)
'以下定義工作表、變量的名稱(chēng)
Dim n, i, m As Integer
n = Worksheets.Count
i = 1
m = 0
'以下查看輸入的日期格式是否正確,是否存在輸入日期的歷史數(shù)據(jù)
For Each Sheet In Worksheets
If Sheet.Name = inputsheet_name Then
m = i
End If
i = i + 1
Next
If m = 0 Then
MsgBox ("您輸入的日期格式不正確或者沒(méi)有這個(gè)日期的歷史數(shù)據(jù)")
Exit Sub
End If
'以下復(fù)制源數(shù)據(jù)表到新建工作表,并以當(dāng)天日期命名
Sheets(m).Select
Sheets(m).Copy After:=Sheets("源數(shù)據(jù)")
Worksheets("源數(shù)據(jù)").Delete
Sheets(2).Name = "源數(shù)據(jù)"
End Sub
4 程序的可改進(jìn)之處
本程序的設(shè)計(jì)思路比較簡(jiǎn)單,只提供了保存歷史數(shù)據(jù)和恢復(fù)歷史數(shù)據(jù)兩項(xiàng)功能,滿(mǎn)足HR部門(mén)解決歷史數(shù)據(jù)保存問(wèn)題的最基本的需求。作者認(rèn)為本程序的可改進(jìn)之處有兩點(diǎn),一是用戶(hù)可以和本單位使用的特定的ERP或HR系統(tǒng)對(duì)接,使得系統(tǒng)導(dǎo)出的源數(shù)據(jù)一鍵保存為歷史數(shù)據(jù);二是歷史數(shù)據(jù)的統(tǒng)計(jì)分析功能可以有更深廣的擴(kuò)展,借助于Excel軟件的數(shù)據(jù)統(tǒng)計(jì)功能,實(shí)現(xiàn)起來(lái)可以事半功倍。
參考文獻(xiàn):
[1] 宋勇江,鞏偉.RSView32利用VBA實(shí)現(xiàn)報(bào)警歷史查詢(xún)[J].自動(dòng)化技術(shù)與應(yīng)用,2014(4).
[2] ASL.數(shù)據(jù)全面保護(hù)數(shù)據(jù)備份、恢復(fù)、粉碎全接觸[J].電腦迷,2014(8).
[3] 肖紅慧,陳瓊.“一體化”理念下歷史數(shù)據(jù)開(kāi)發(fā)和管理新思路[J].中國(guó)傳媒科技,2012(12).