中图分类号:TB
文献标识码:A
doi:10.19311/j.cnki.16723198.2017.13.093
1什么是VBA和结构化数据
VBA是“Visual Basic for Applications”的简称,它是Microsoft Visual Basic 的宏语言版本,也可以说是一种应用程式视觉化的Basic脚本,用于撰写基于Windows 的应用程序,内置于多个Microsoft程序,尤其是office系列的excel、word、power point中。通过Visual Basic 编辑器可以通过撰写或修改代码来创建宏,宏是一系列命令和指令的组合,可以作为单个命令实行来自动完成某项任务,尤其是需要频繁用的任务。学会了VBA,可以将多个步骤的手工操作变得简单飞速,而且通过可视化的界面,可以将结果更明确的呈现出来。比如,企业的销售部门有统计合同信息的excel表格,相应的采购、生产仓储部门都有我们的统计信息表格,每月为了统计合同实行状况,剖析职员可以先抓取合同统计表中的合同号,然后在其他表格中按合同号筛选对应记录,再把有关信息手工粘贴到新的表格中,假如合同较多的话,这一过程将十分繁琐。假如用了VBA编制的宏,可以从多个表中,自动生成按合同号来跟踪采购量、入库量、出库量、生产量、销量和库存量的统计清单,统计剖析任务将会十分轻松。
结构化数据是信息的集合,这种信息可以用数据或同一的结构来表示,如典型的excel表格中,一行或一列是一类数据,行首或列首为标题栏,列出的是这种数据的属性,如“名字、年龄”等,下面是具体数据,如“张3、李四”等。对应的是非结构化数据,这种数据没办法构成典型的表格,而是离散的,如视频、音频、图片等形式。
2借助VBA进行结构化数据审计的优势
(1)功能强大。企业财务或业务系统不论用的是进销存系统还是用友或其他系统,数据都是存储在数据库中的,典型的数据库如SQL Server、Oracle存储的都是结构化数据。为发现问题或疑点,审计职员总是要从很多结构化数据中探寻线索,确定审计重点和方向,进行数据剖析、比对,完成审计目的。这一过程可以通过审计软件完成,同样也可以通过VBA完成,由于VBA是结构化数据处置的利器,它的设计初衷就是自动处置很多重复的工作,这与审计工作需要相一致。可以说,用VBA可以处置结构化数据审计中的绝大多数工作。
(2)简单易用。审计软件要用专门的数据抓取工具?钠笠档男畔⑾低持刑崛∈?据,再转化为审计软件可以辨别的数据,这一过程很复杂,且耗时较长;用VBA可以直接在excel上操作,只须从企业信息管理软件中把数据导出到excel表格即可,审计职员均可操作,简单快捷。审计软件总是甚至不少功能,假如没较好的操作手册,非常难完全学会,容易给人复杂难用的印象;用VBA可以就一项功能撰写一个宏,通过增加注解可以进行傻瓜操作,目的性强,操作直接。
(3)易于开发。审计软件功能固化、系统封闭,用户没办法接触原始代码,假如想要增加新的功能,只能求助于原开发者继续开发或购买新的升级版本;VBA是完全开放的,只须需要发生改变,其他人、任何时间都可以修改或新建代码去满足需要,而且由于VB语言逻辑性强,开发者并无需非常高的需要,经过肯定学习就能学会,也利于开发新的应用。
(4)节省资金。审计信息化建设需要足够的建设经费作保障,购买服务器和软件、搭建审计信息化互联网、互联网维护等都需要很多资金投入。而且,重建设、轻应用,重硬件、轻软件等现象常见存在,有关硬件与软件购置之后束之高阁,导致非常大的浪费。VBA是基于office办公软件的编程工具,只须有可以正常用的excel或word软件,除去撰写VBA程序的投入外,几乎无需多余投入。
3应用举例
3.1对应科目剖析
在财务报表审计中,审计职员总是需要查找某科目的对应科目,以判断会计处置是不是正确、是不是用正确科目、是不是存在疑点等,如“收入”、“应收(付)账款”、“银行存款”、“其他应收(付)款――其他”等。在excel中可以先筛选出包括本科目的记录,再查找凭证号,然后通过具体凭证看到他们科目,这一过程繁琐低效,容易出错。用VBA可以达成这一功能,
代码中sRow代表数据起始行,初始值=2,eRow代表数据终止行,Range(i,3)代表月份,Range(i,4)代表凭证号,kName代表拟查看的科目名字,sTure为判断标志,i为查凭开始数,j为查凭结束数,初始值均为sRow。
内在逻辑为:从sRow开始,假如下一行的月份加凭证号=本行的月份加凭证号,说明它们是一张凭证上的,此时查凭结束数j+1,指向下一行,同时再判断本行或下一行的科目名字是不是等于kName,假如等于,sTure=1,表示这张凭证是要抽取的;假如下一行的月份加凭证号不等于本行的月份加凭证号,说明一张凭证查完了,此时判断sTure假如等于1,把第sRow行到第j行的第9列都设为1,然后让sRow指向i+1行,同时清零sTure,假如sTure不等于1,不做操作。这样循环一遍,包括科目名为kName的凭证都被标记出来,就能非常轻松的看到他们科目了。
3.2生成询证函
当企业顾客、提供商、银行账户较多时,可能需要编制上百件询证函,通过手工复制、粘贴耗时耗力,此时可以用VBA自动插入功能。第一设计好询证函模板,如单元格h3代表编号,单元格a5代表单位名字,单元格c12代表金额;然后把统计信息填入“函证信息”表格,每行第1列代表编号,第2列代表单位名字,第3列代表金额。在询证函模板后面复制一张新表,在新表单元格h3、a5、c12分别赋值函证信息中的一行数据,然后打印新表,打印后删除,完成一份询证函后,计数器加1,再循环生成下一张询证函。主要代码如下:
除去上面举例以外,VBA还可以应用于审计抽样、实质性测试、审计底稿编制等方面,假如用好使精,可以帮助审计职员从庞大的数据梳理出审计疑点,锁定审计目的,通过实时的或动态的检查和监控,大幅提升审计效率和水平。