基于VBA的用电清单嵌入式应用程序在电费统计中的应用
2021-03-24胡永红刘修理
胡永红,刘修理
(贵州电网有限责任公司遵义供电局,贵州 遵义563000)
笔者在供电所营业班工作中,因每月重复制作多点用电客户电量电费清单中遇到的制作速度慢、错误率高等问题,导致客户不能及时交费,给供电所带来电费结零及客户投诉的风险。传统的清单制作方法是在系统中查出单户的电量、电费、抄表、预收等信息进行手工复制粘贴,这种方法非常简单,适用于用户数在30 户以下的清单,对超出30 户或100 行以上的清单,易出现漏户、数据错误、格式不统一等问题。而VBA编程处理多表格数据,能够满足简单、快捷制作客户用电清单的要求。
1 设计方案
清单中客户要求主要数据有:用户编号、用户名称、起止表码、倍率、电量、退补(差错)电量、单价、电费以及客户的备注等信息。这些数据分别来源于营销系统中导出的电价明细、抄表区段、用电客户信息、运行电能表台账信息、电量电费明细信息、表码信息、预收明细、用户欠费明细信息等表格中。
实现快速制作一个清单表格文件,首先应确定所有用户编号(清单列表)作为生成清单的基础。再根据清单列表中的用户编号在用电客户信息表中提取用户名,在表码信息表中提取起止表码及倍率,电量电费明细信息表中提取电量及退补信息,运行电能表台账信息表、电价明细、所用电价表中提取单价,用户欠费明细信息表中提取该户当月应缴电费,用户备注表中提取相关备注数据。
2 方案实现
该程序主要处理数据批量导入并利用表格间数据关系形成电价与电费年月,快速生成独立的清单表格并分档保存。并设置登录界面确定制表人及供电单位。
为了实现多表格批量分别导入,使用With CreateObject("scripting.filesystemobject")语句引用FSO 对象,用For Each file In .getfolder(ThisWorkbook. Path & "data").Files 语句遍历文件夹所有符合条件的文件进行导入。
数据导入完成后,应进行电价赋值处理,使程序中使用的电价与系统电价一致,为了直观地查看各户电价,将电价值附加在运行电能表明细信息表后,因电价在一段时间内是相对固定的,所以,所用电价不必要每月进行导入,只处理运行电能表明细信息表中对应的电价数据。
为便于修改,需要有一个固定格式的清单模板表格。表后可加入核对用户预收情况、运行状态、手工平衡加减电量等数据,对于有阶梯的用户在集团用户中约占0.1%左右,本程序不进行阶梯数据处理,可以在模板后加注是阶梯类别进行区分,单独进行手工处理(待进行下一版本开发时再完善相关功能)。在清单程序生成表格的过程中利用页面设置中PrintArea属性确定打印区域,使表后的备注信息不出现在打印输出中。
为了实现用户分组生成清单,应制作一个用户分组的清单列表,由于表格是每月变化的,所以本程序的调用过程实现中不采用按钮进行操作,设置为双击(Worksheet_BeforeDoubleClick 事件)相应单元格来完成操作代码过程。
为保证清单100%正确,在程序设计时也要考虑人工核对处理环节。为了不出现误操作,在批量导入、注销、生成清单、批量变更电价等关键位置设置确认对话框,比如:是否采用批量导入(如:
If MsgBox("用电客户信息、运行电能表台账信息、电量电费明细信息、表码信息、预收明细查询、抄表区段、用户欠费明细信息" & ThisWorkbook.Path & "下保存有相同格式表格", vbOKCancel,"程序员的提示!") = vbOK Then)、是否更新电价、是否直接生成清单表等,确保生成的清单满足客户的要求。
这一基于VBA的用电清单嵌入式应用程序,虽然是一个简单制作清单的程序,但是,对于从未接触过VBA的人来说操作也有一定难度,所以在程序中应设计一个简单的用户操作指引,并在指引中实现导入、统计工作表及切换用户(注销)等功能。
程序中利用Move 事件控制各表的顺序,使得操作起来能习惯,提高使用效率,具体实现该功能的代码如下:
用Delete 事件对程序不需要的表格进行清理删除,保持程序每次打开时表格数为指定的必要表格,避免出现多余的表格,造成程序出错或进入死循环。实现其功能的代码如下:
为防止未经保存退出造成数据丢失,在Workbook_BeforeClose 模块中加入存盘代码进行保存。代码如下:
该代码应用到打开和保存模块中,使得每一次打开程序或执行保存操作时对程序中的表格进行一次整理。
3 使用效果
使用清单程序制作清单后,收到了明显的效果,2020年12月,供电所清单制作平均耗时47 min,相对传统方法制作清单的供电所每月平均制作清单时长2392 min基础上效益提升了51倍。
掌握了VBA,可以发挥以下作用:规范用户的操作,控制用户的操作行为;操作界面人性化,方便用户的操作;多个步骤的手工操作通过执行VBA代码可以迅速的实现;实现一些VB 无法实现的功能。用VBA 制做WPA 登录系统。利用VBA 可以WPA内轻松开发出功能强大的自动化程序。
在供电所推广VBA的应用,不仅是在制作清单程序上的应用,这种应用的开展有助于供电所人员在工作中利用新方法、新的思维方式解决工作的难点问题,也有助于推进精益化项目的提炼和项目的实用性提升,真正达到开展精益项目成果推广的意义。
4 结束语
VBA应用于WPS的各应用程序中,极大地提升了WPS的应用开发能力,VBA成了许多高级用户及开发人员开拓WPS中各应用程序功能的最有力的工具,本文主要对基于VBA的“用电清单”嵌入式应用程序的核心部份进行了阐述,促进VBA在供电所中推广应用,以提高员工的工作效益。