|
本人在单位负责保险工作,办理员工退休业务也是主要工作之一,目前,办理员工退休执行的是北京市183号文件,该文件2007年发布并执行,该文件强调了员工的养老保险水平与缴费年限长短、缴费水平高低紧密挂钩,形成多缴费多收益的参保缴费激励约束机制,因此,在计算基础养老金的方法上引入了Z实指数概念,Z实指数就是实际缴费工资平均指数,涉及到员工实际每一年度的缴费基数,计算起来比较复杂,为了方便企业计算员工退休费,从该文件执行之日起,北京市人力资源和社会保障局统一编制了《退休核准系统企业版》(以下简称退休软件)软件,企业用退休软件计算退休员工的养老金
我们的行业代办机构在审核退休时,给我们打印出的员工个人基础信息表和账户信息表,我们要通过手工的方式录入到系统中去,(听说区县机构可以下载这些信息,导入系统,我们没有),信息录入是很繁琐的事,而且数据信息量比较多,每一名退休员工个人基础信息有30多个数据(包括姓名,身份证等),账户信息20多条,120多个录入信息点,需要逐一录入,反复核对,一个数字的错误,都有可能时计算结果产生误差。在实际工作中,为了保证计算结果的正确,通常的做法是需要两个人,分别在不同的计算机上进行计算,对结果进行核对,只有在两种结果达到一致时,才能通过。这样,计算一名员工的退休费的时间需要花费在20分钟或30分钟,当企业一个月内有多名退休人员时,花费的时间将更多。这种耗时费力的工作效率也很低,出错率高,两台计算机计算的结果常出现不一致现象,再查找原因,有时甚至将数据删除,重新录入。这种工作方式很郁闷。
在使用退休软件的应用中,发现退休软件在用户使用方面,提供了两种录入方式,一种是信息导入,一种是手工录入。我认为,虽然社保代办机构没有提供给我们导入的信息,但既然退休系统提供了信息导入的功能,就为我们解决这个问题提供了有力条件,只要了解到导入文件的格式,用软件生成符合要求的文件,就能实现信息的自动导入。说实在的,让我手工录入数据,枯燥乏味,容易出错,很不自信。我想这个问题对从事人力资源的朋友,可能有有一定共性,因此,我编写了一个导入程序,贡献出来供大家学习。
通过了解得到了导入信息的文件格式,是一组带有数据以逗号为分隔符的文本文件,每组数据以竖线作为结束符号。这种文件分两种,一种是员工的基础信息,另一种是账户信息。具体样式如下图:
从以上两个文本格式的内容表现形式上可以看出,每一行中的逗号前都有数据,进一步分析会发现,每一个逗号前的数据,就是我们在退休软件中需要录入的数据。比如,图1明显的内容可以看出第一组数据是员工身份证,第二组是员工电脑序号,第三组是员工姓名等等。图2的表现也是有规律的一组录入的数据,分别可以看出是身份证、电脑序号、当年缴费基数、起始年月、月数、截至年月。导入的顺序是先导入员工基础信息,再导入员工的账户信息.
了解了导入的标准格式之后,要想自动导入,还需要确定数据来源,在申报员工退休时,每一个单位都要填报一张《退休员工登记表》,这张表是上级社保机构编制的,采用EXCEL文件,其表的样式如下:
这张表的提供的信息,完全能满足需要,下面就是代码的编写了。
Sub CreatFilegrxx()
Dim fso As New FileSystemObject
Dim StrFn As String
Dim Strfies As String
Dim Strgrxx As String
Dim Ts As TextStream
Strfies = "GRXX" & Cells(6, 3)
StrFn = Application.GetSaveAsFilename(InitialFileName:=Strfies, fileFilter:="Text Files (*.txt), *.txt")
If StrFn = "False" Then Exit Sub
If Dir(StrFn) = "" Then
Set Ts = fso.CreateTextFile(StrFn)
Sheets("基本信息").Select
Strgrxx = "63396330081797," & Cells(6, 3) & ",6330081797," & Cells(4, 3) & ",1,17.1,17.11,0,5,117222.11,,," & Cells(4, 5) & ",1," & Format(Cells(6, 6), "yyyy-mm-dd") & ",01," & Format(Cells(7, 3), "yyyy-mm-dd") & ",3,否,0.00|"
MsgBox Strgrxx
Ts.WriteLine Strgrxx
Ts.Close
MsgBox "文本文件已经建立,文件在" & StrFn
End
Else
Isfileset = MsgBox("发现相同文件,要复盖吗?", 4 + 64)
If Isfileset = 6 Then
Set Ts = fso.CreateTextFile(StrFn)
Sheets("基本信息").Select
Strgrxx = "63396330081797," & Cells(6, 3) & ",6330081797," & Cells(4, 3) & ",1,99.11,99.11,0,5,117222.11,,," & Cells(4, 5) & ",1," & Format(Cells(6, 6), "yyyy-mm-dd") & ",01," & Format(Cells(7, 3), "yyyy-mm-dd") & ",3,否,0.00|"
MsgBox Strgrxx
Ts.WriteLine Strgrxx
Ts.Close
MsgBox "文本文件已经建立,文件在" & StrFn
Else
MsgBox "退出程序"
End
End If
End If
End Sub
用以上代码生成的文本文件,在退休软件里读入,员工个人信息就自动读进去了。程序编号后,工作起来很爽。
写了这么多,就想说,尽管对专业编程人员来讲,VBA的编程是最简单的,最容易上手的编程语言,掌握了其编程技能很难能得到业内人士的认可,特别是在网络编程语言大兴其道的今天。但评价一种编程语言的优劣,并不在语言本身,只要使用它能解决管理工作中的实际问题,提供高效率的解决方案,就算是最好的语言。
[ 本帖最后由 weiguoyin868 于 2010-10-8 19:34 编辑 ] |
|