VB.Net子集(VBA7.0)在核对员工社保数据与基数申报的应用
韩玮杰 韩树标
【摘 要】在社会保障工作中,将VB.Net子集(VBA7.0)应用于核对员工社保数据与基数申报程序中,通过VBA与Office新版软件的无缝集成,实现了核对员工社保数据的程序自动化进行,实现了下一年基数计算的纯数字化无人操作。
【Abstract】In the work of social security, a subset of the VB.Net (VBA7.0) is applied to check the employee social security data and base reporting procedures, through the seamless integration of VBA and new version office, the automatic program of checking staff social data is realized, and realize the pure digital unmanned operation of last year cardinal calculation.
【关键词】VB.Net 子集; 社保数据 ;基数
【Keywords】VB.Net subset ; social security data ; base
【中图分类号】TP311 【文献标志码】A 【文章编号】1673-1069(2017)07-0144-02
1 引言
煤峪口矿作为一座具有百年历史的老矿,企业员工数量非常庞大,截至2017年5月,本矿正式参加社会保险的在职员工有5000多人,而社保管理部门的一项重要工作内容就是每年给全矿的所有在职员工与工伤退岗员工申报本年的社保缴费基数,这个缴费基数是由去年全年该员工的统筹工资取平均值算得;其另一项日常重要工作内容则是根据每个月全矿员工的工资台账中记录的社保实际扣款,与该员工的社保申报扣款基数核对,发现错误应及时调整纠正。这些工作任务量相当大,需要记录下每个人该年度内每个月的统筹工资,并与根据上年的申报基数计算得到的养老金、医疗金、失业金进行核对。这项工作在进行时,工资台账中包含的大量无用数据、在各个表格间切换耗费的时间、查找替换需要的烦琐操作以及重名员工会给该项工作造成干扰,使得这项日常工作对人时间的消耗、精力的消耗巨大,而且错误率也居高不下,初次做完后需要多次核对才能保证结果基本正确。再考虑到每个月各种情况的人员增减变动对结果的影响,可以说,这项任务是对工作人员耐性的极大挑战。
2 研究内容及创新点
2.1 本套程序的结构组成
本套程序由前端用户接口(UI)和后级子程序(SubProgram)构成。前端用户接口是一个包含有一些标准控件的Windows窗体;后级子程序则分为供窗口调用的过程子程序(Sub)和供过程子程序调用的函数子程序(Function)。这些子程序按照应用步骤的不同被分别放置在两个不同的模块里以便于管理公共变量和功能区分。另外还有一个提供转换功能的通用子程序,放置在一个单独的模块中。宏观的功能组包含有三组,子程序有27个。
2.2 本套程序的安装运行方式
本程序使用的VB子集版本为VBA7.0,该VBA集成自Office 2010版本开始使用,并且保持后项兼容。由于该套程序中引用了Office 2013及以后版本才提供的全新工作簿统计函数,因此本套程序需要的运行环境为安装有Office 2013、Office 2016或者Office 365的Windows计算机,该程序在32位版本的Office或者64位版本的Office下均可使用。考虑到控件安装形式带来的兼容性和稳定性问题,本套程序采用包含宏的
.xlsm格式保存和發行。
2.3 本套程序的作用
①工资台账按分组重命名;
②工资台账原始数据摘取;
③对比本年社保扣款结果,并且准备下一年要申报的基数。
2.4 本套程序可实现的功能特点
①自动读取对应月份的数据目录,无须手动使用目录设定对话框指定每个月的数据所在目录。
②智能判断每个台账Excel文件中包含的科室名称,据此将原始台账数据不适用于本单位的文件名重命名为有规律的、便于后期工作数据处理的文件名。
③自动打开各个台账Excel文件,自动输入密码,自动设置格式,自动处理包含链接的Excel文件,自动读取各个台账Excel文件中记录的本工作所需要的员工本月统筹工资金额、本月扣除养老保险数额、本月扣除医疗保险数额、本月扣除失业保险数额,智能纠正原始Excel台账文件中包含的公式错误、引用错误和链接错误,并将处理结果写入中间文件。最后对读取到的数据进行合理性判断,删除读取到的无效数据,标记出有逻辑错误的数据,方便后期处理。整个过程无须人工干预,全部由程序自动完成。
④先读取处理完成的中间文件,然后读取汇总文件中的申报基数信息,将文件中记录的每一个员工的扣款数据和申报的基数进行对比,比对正确的数据记录联合统筹工资写入到该汇总文件,比对错误的数据记录写入到错误记录库。由于VBA程序的运行机制问题,代码对VBA对象的访问非常耗时。因此,本套程序专门对此做出了优化:只在开始读取记录的时候和末尾保存比对结果的时候使用对象访问操作,其他操作一律在内存数组中完成。这虽然会增加程序占用的计算机RAM资源,但是,这种方法规避了大量对象读写操作的超长耗时,而且当下主流计算机配置的RAM均在4GB或以上,用增加200MB内存消耗的代价换取几个小时的时间节省,显而易见是一种更优的做法。
⑤根据上级社保单位提供的局内社保数据记录表,比对工资汇总表,自动补全其缺失的人员信息,便于每年的数据核对工作和基数申报工作。
⑥每年申报基数后需要根据上级社保单位给出的保底工资和封顶工资调整年初预估工资的误差,本功能与核对功能合并在一个子程序内完成,用对话框返回参数的形式进行控制。
3 实际应用状况及经济效益
本套程序自2016年12月开始设计、编写代码,2017年3月份初步完成第一版,并立即投入使用,同时在使用中根据出现的实际问题不断完善代码的稳定性与兼容性。
根据对负责这项工作的老员工的咨询以及与兄弟单位的相关工作人员的交流,平均每处理1000位在职员工的社保数据,需要两名工作人员3至5个工作日的时间。使用本套程序处理数据,每1000位在职员工平均需要约7分钟的时间。程序耗时实测数据如下(1000条测试样本,Windows7 x64,Office 2013 SP1 x64):
本矿有在职员工约5000人,每个月在该套程序的协助下完成数据处理需要大约半小时的时间。全矿有约八万在职员工,大约80名负责在职员工数据处理的工作人员。按照每1000人3个工作日耗时的平均值来计算,纯人工操作的情况下八万在职员工需要大约240个工作日,使用本套程序则仅需要8小时,即一个工作日。由此可见,若是将本套程序推广给有相同需求的兄弟单位,一个月便可以节省239个工作日的时间消耗,相当于10多个月的工作量。按照3000元每人的平均工资计算,这套程序一个月可以节省工资支出3万多元。这还没有考虑因人工处理失误造成的工时消耗。
4 结语
VB.Net子集(VBA7.0)在社会保障工作中核对员工社保数据与基数申报程序的应用取得了相当好的效果,经济效益非常显著,如果它能应用在全国各个企事业单位的话,那将对节支降耗产生极大的影响,因此具有极大的推广应用价值。下一步将首先优化代码的兼容性,使之适用于更多条件更多场合,并逐步向兄弟单位的相关工作人员推广使用,以提高工作效率,降低错误率,使社保工作更加有序高效的进行,更好地保障员工的权益。
【摘 要】在社会保障工作中,将VB.Net子集(VBA7.0)应用于核对员工社保数据与基数申报程序中,通过VBA与Office新版软件的无缝集成,实现了核对员工社保数据的程序自动化进行,实现了下一年基数计算的纯数字化无人操作。
【Abstract】In the work of social security, a subset of the VB.Net (VBA7.0) is applied to check the employee social security data and base reporting procedures, through the seamless integration of VBA and new version office, the automatic program of checking staff social data is realized, and realize the pure digital unmanned operation of last year cardinal calculation.
【关键词】VB.Net 子集; 社保数据 ;基数
【Keywords】VB.Net subset ; social security data ; base
【中图分类号】TP311 【文献标志码】A 【文章编号】1673-1069(2017)07-0144-02
1 引言
煤峪口矿作为一座具有百年历史的老矿,企业员工数量非常庞大,截至2017年5月,本矿正式参加社会保险的在职员工有5000多人,而社保管理部门的一项重要工作内容就是每年给全矿的所有在职员工与工伤退岗员工申报本年的社保缴费基数,这个缴费基数是由去年全年该员工的统筹工资取平均值算得;其另一项日常重要工作内容则是根据每个月全矿员工的工资台账中记录的社保实际扣款,与该员工的社保申报扣款基数核对,发现错误应及时调整纠正。这些工作任务量相当大,需要记录下每个人该年度内每个月的统筹工资,并与根据上年的申报基数计算得到的养老金、医疗金、失业金进行核对。这项工作在进行时,工资台账中包含的大量无用数据、在各个表格间切换耗费的时间、查找替换需要的烦琐操作以及重名员工会给该项工作造成干扰,使得这项日常工作对人时间的消耗、精力的消耗巨大,而且错误率也居高不下,初次做完后需要多次核对才能保证结果基本正确。再考虑到每个月各种情况的人员增减变动对结果的影响,可以说,这项任务是对工作人员耐性的极大挑战。
2 研究内容及创新点
2.1 本套程序的结构组成
本套程序由前端用户接口(UI)和后级子程序(SubProgram)构成。前端用户接口是一个包含有一些标准控件的Windows窗体;后级子程序则分为供窗口调用的过程子程序(Sub)和供过程子程序调用的函数子程序(Function)。这些子程序按照应用步骤的不同被分别放置在两个不同的模块里以便于管理公共变量和功能区分。另外还有一个提供转换功能的通用子程序,放置在一个单独的模块中。宏观的功能组包含有三组,子程序有27个。
2.2 本套程序的安装运行方式
本程序使用的VB子集版本为VBA7.0,该VBA集成自Office 2010版本开始使用,并且保持后项兼容。由于该套程序中引用了Office 2013及以后版本才提供的全新工作簿统计函数,因此本套程序需要的运行环境为安装有Office 2013、Office 2016或者Office 365的Windows计算机,该程序在32位版本的Office或者64位版本的Office下均可使用。考虑到控件安装形式带来的兼容性和稳定性问题,本套程序采用包含宏的
.xlsm格式保存和發行。
2.3 本套程序的作用
①工资台账按分组重命名;
②工资台账原始数据摘取;
③对比本年社保扣款结果,并且准备下一年要申报的基数。
2.4 本套程序可实现的功能特点
①自动读取对应月份的数据目录,无须手动使用目录设定对话框指定每个月的数据所在目录。
②智能判断每个台账Excel文件中包含的科室名称,据此将原始台账数据不适用于本单位的文件名重命名为有规律的、便于后期工作数据处理的文件名。
③自动打开各个台账Excel文件,自动输入密码,自动设置格式,自动处理包含链接的Excel文件,自动读取各个台账Excel文件中记录的本工作所需要的员工本月统筹工资金额、本月扣除养老保险数额、本月扣除医疗保险数额、本月扣除失业保险数额,智能纠正原始Excel台账文件中包含的公式错误、引用错误和链接错误,并将处理结果写入中间文件。最后对读取到的数据进行合理性判断,删除读取到的无效数据,标记出有逻辑错误的数据,方便后期处理。整个过程无须人工干预,全部由程序自动完成。
④先读取处理完成的中间文件,然后读取汇总文件中的申报基数信息,将文件中记录的每一个员工的扣款数据和申报的基数进行对比,比对正确的数据记录联合统筹工资写入到该汇总文件,比对错误的数据记录写入到错误记录库。由于VBA程序的运行机制问题,代码对VBA对象的访问非常耗时。因此,本套程序专门对此做出了优化:只在开始读取记录的时候和末尾保存比对结果的时候使用对象访问操作,其他操作一律在内存数组中完成。这虽然会增加程序占用的计算机RAM资源,但是,这种方法规避了大量对象读写操作的超长耗时,而且当下主流计算机配置的RAM均在4GB或以上,用增加200MB内存消耗的代价换取几个小时的时间节省,显而易见是一种更优的做法。
⑤根据上级社保单位提供的局内社保数据记录表,比对工资汇总表,自动补全其缺失的人员信息,便于每年的数据核对工作和基数申报工作。
⑥每年申报基数后需要根据上级社保单位给出的保底工资和封顶工资调整年初预估工资的误差,本功能与核对功能合并在一个子程序内完成,用对话框返回参数的形式进行控制。
3 实际应用状况及经济效益
本套程序自2016年12月开始设计、编写代码,2017年3月份初步完成第一版,并立即投入使用,同时在使用中根据出现的实际问题不断完善代码的稳定性与兼容性。
根据对负责这项工作的老员工的咨询以及与兄弟单位的相关工作人员的交流,平均每处理1000位在职员工的社保数据,需要两名工作人员3至5个工作日的时间。使用本套程序处理数据,每1000位在职员工平均需要约7分钟的时间。程序耗时实测数据如下(1000条测试样本,Windows7 x64,Office 2013 SP1 x64):
本矿有在职员工约5000人,每个月在该套程序的协助下完成数据处理需要大约半小时的时间。全矿有约八万在职员工,大约80名负责在职员工数据处理的工作人员。按照每1000人3个工作日耗时的平均值来计算,纯人工操作的情况下八万在职员工需要大约240个工作日,使用本套程序则仅需要8小时,即一个工作日。由此可见,若是将本套程序推广给有相同需求的兄弟单位,一个月便可以节省239个工作日的时间消耗,相当于10多个月的工作量。按照3000元每人的平均工资计算,这套程序一个月可以节省工资支出3万多元。这还没有考虑因人工处理失误造成的工时消耗。
4 结语
VB.Net子集(VBA7.0)在社会保障工作中核对员工社保数据与基数申报程序的应用取得了相当好的效果,经济效益非常显著,如果它能应用在全国各个企事业单位的话,那将对节支降耗产生极大的影响,因此具有极大的推广应用价值。下一步将首先优化代码的兼容性,使之适用于更多条件更多场合,并逐步向兄弟单位的相关工作人员推广使用,以提高工作效率,降低错误率,使社保工作更加有序高效的进行,更好地保障员工的权益。