2015年
财会月刊(33期)
教学之研究
基于Excel VBA的《会计电算化》课程考核新探索

作  者
张文福

作者单位
(浙江东方职业技术学院,浙江温州 325011)

摘  要

      【摘要】会计电算化课程是高职院校会计类专业的一门核心课程,注重学生运用软件对企业会计业务核算能力的培养,学校一般采用财务软件进行教学与实训。然而,如何检查实训结果及考核学生对操作技能的掌握情况,是任课教师面临的一大难题。笔者结合自身教学经历,以用友ERP-U872软件为例,介绍了运用Excel VBA该课程考核改革的一些做法。
【关键词】会计电算化;Excel VBA;用友ERP-U872根据信息化发展的大趋势,当前我国高职院校会计类专业大多开设了《会计电算化》课程,课程基本都是依托企业运用较广的财务软件开展教学,如用友财务管理软件、金蝶财务管理软件。然而,运用软件教学却面临着如何评价学生学习效果的难题。对学生实训结果的检查并及时指出实训中存在的问题,一方面可以纠正学生的错误,顺利开展后续实训项目。另一方面,通过检查可以给学生一定的压力,有效地提高学生的学习积极性和学习动力。同时还有利于教师开展有效教学,及时发现学生学习的薄弱环节。
一、传统课程考核存在的主要弊端
当前各校针对《会计电算化》课程进行考核所采取的方式有:期末纸质测试、纯手工检查实训账套、引用考试系统测试,下面从三个方面分析存在的主要弊端。1. 期末纸质测试存在的主要问题。根据调研,目前还有部分高职院校采用纸质测试形式考核学生《会计电算化》课程的学习效果。通过传统的单项选择题、多项选择题、判断题及业务操作描述题等题型去考核学生对软件操作的掌握程度。此法在过去学校硬件设备投入严重不足的情况下不失为一种有效的方式。但目前高职院校实训教学条件大大改善,基本都可以实现单人单机,再要求学生去背这些通过简单操作就可以实现的操作步骤显然与高职教育特点相违背。往往通过记忆取得高分的学生未必能够很好地完成软件实际操作。
2. 纯手工检查存在的主要问题。不少高职院校会计专业在教学中采用这种方式,也就是说,学生课堂进行实训,下课或项目完成后,通过财务软件的备份(输出)功能将实训结果以账套包的形式上传给任课教师,任课教师再通过财务软件的恢复(引入)功能将学生的账套包引入软件系统,并逐一检查学生实训情况。这种方法将学生所做业务全部核对一次,可以发现一些操作上的错误。
但手工检查仍存在着诸多的缺点。一方面,随着软件功能的不断拓展,各软件的账套包容量不断增大,如用友U8.11一个账套包只有10M左右,而到U872已经是近1G的容量,账套解压及引入过程接近3 ~ 5分钟,如果学生达到100人,每次仅账套引入系统就将消耗几个小时,更不用说检查过程。另一方面,教师仅通过观察对比,在数据量极多的情况下,很难快速发现学生操作上存在的问题,如一些辅助核算基本上无法指出学生的实训错误。因此,使用这一方法教师痛苦不堪、对学生学习效果的促进也没有多大的作用。
3. 考试系统评价存在的主要问题。当前,多数财务管理软件公司都依托自己的账务管理系统开发了相应的考试系统。用友就有几个版本的考试系统,如用友认证考试系统、用友教考系统等。使用考试系统进行测试可以很好地检查学生对考试试题操作技能的水平。但一般考试系统的采购都需要高昂的采购费用,并不是一般的高职院校愿意支付的教学费用。再则,考试系统题目的生成基本依赖于相关软件公司,题目制作与教师教学无法很好地有机结合,即无法实现教学平时的过程性评价。虽然用友教考系统已经开放了教师制作题库的功能,但操作过程复杂及制题的前后约束使很多任课教师望而却步。最后,采用期末一次性测试会给学生带来投机的思想,学生期末只需通过简单重复练习测试中出现的几道操作题就比较容易过关,而实际分析问题、解决问题的能力却没有得到相应提高。
二、基于Excel VBA的考核改革的基本原理
在用友软件中,大量的实训资料都可以通过界面上的“输出”功能进行Excel格式的数据输出。这为考核改革提供了坚实的基础,通过运用Excel丰富的公式运算功能将标准账套与评价账套分别输出的数据进行比对,从而确定学生实训成绩并指出出错的地方,下面具体以会计科目表的考核简单阐述基本原理。
1. 输出Excel数据。首先输出标准账套的会计科目表,具体方法是在“会计科目”管理界面下点击“输出”,选择保存类型为“Microsoft Excel 97-2003(∗.xls)”,取名为“测试数据”工作簿。同时,采用相同的方法将学生账套导出数据,并将其放置到“测试数据”工作簿的第2张表页上。以学生学号为表名存储。
2. 数据比对。在第三张表页上输入比对公式,使用EXACT(text1,text2)函数进行测试,EXACT(text1,text2)函数用于检测两个字符串是否完全相同。参数text1和text2分别表示需要比较的文本字符串,也可以是引用单元格中的文本字符串,如果两个参数完全相同,EXACT函数返回TRUE值,否则返回FALSE值。如果学生账套数据与标准账套中数据一致则返回TRUE,当发现返回值为FALSE时,说明学生实训结果有误。
3. Excel VBA实现结果的统计与分析。最后应该将数据对比的结果按考核的要求进行量化,因此应该将结果进行统计分析。手工分析过程一方面工作过于复杂,同时准确性不高。所以,建议引入Excel VBA简单编程进行结果统计汇总。按本次考核分值Y,根据比对采分项目,如N,所有比对结果为TRUE项目n,最终本项目的得分为y=[nN×Y],并根据所有考核项目,最终生成学生实训结果的成绩,供学生学习效果评价使用。
三、具体实现过程
引入Excel VBA后,原理中所讲的1和2均由VBA相关模块和函数完成,下面具体以设置会计科目任务考核为例介绍全部过程。 假设标准账套为2011年1月,账套号为888,学生账套为2011年1月,账套号为999。相应这两个账套在MS SQL Server2000中对应的数据库分别为UFDATA_888_2011和UFDATA_999_2011两个数据库。会计科目的信息存储在code表中,关键字段主要有9个,分别为科目类型、级次、科目编码、科目名称、助记码、外币币种、计量单位、辅助账类型、账页格式等。
1. 设置开发环境。在提取信息之前,建立新的工作簿,按快捷键Alt+F11进入VBA工程窗口,由于通过VBA访问用友ERP-U8后台MS SQL Server2000数据库采取的是ADO访问方式,ADO(ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。Excel默认启动是未引用ADO数据对象的, 所以在使用VBA访问SQL Server2000数据库前,需要添加ADO引用。通过菜单“工具”——“引用”命令,选择“Microsoft ActiveX Data Objects2.8 Library”并单击“确定”。接下来就可以使用DO进行编程了。
2. 编写模块代码。为提高代码的复用率,我们将相关处理过程编写成模块。在VBA工程窗口,在“模块”上右键,选择“插入”——“模块”命令。主要模块包括4个,分别是提取会计科目信息、评分程序、提取标准数据、具体评分。
(1)编写提取会计科目信息的代码。
在VBA中将从MS SQL Server2000相应数据库中取数的程序做成模块。在模块中写入如下代码:
Rem 从数据库中提取数据到EXCEL表格,参数Sheet表示提取数据存放的数据表名称,参数DataID表示账套的数据库名称
Public Function QueryData(Sheet As Worksheet, DataID As String) As Boolean
    Dim conn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim strConn As String
    Dim strSql As String
    Dim i, j As Integer   
    strConn="Driver=SQL Server;Server=127.0.0.1;Database=" & DataID & ";uid=sa;pwd=;"
    conn.Open strConn
    strSql="SELECT cclass,igrade,ccode,ccode_name,chelp,cexch_name,cmeasure,cother, cbook_type FROM code  ORDER BY ccode"
    rst.Open strSql, conn
    Sheet.Cells(1,1)="类型"
    Sheet.Cells(1,2)="级次"
    Sheet.Cells(1,3)="科目编码"
    Sheet.Cells(1,4)="科目名称"
    Sheet.Cells(1,5)="助记码"
    Sheet.Cells(1,6)="外币币种"
    Sheet.Cells(1,7)="计量单位"
    Sheet.Cells(1,8)="辅助账类型"
    Sheet.Cells(1,9)="账页格式"
    j=2
    Do While Not rst.EOF
        For i=1 To rst.Fields.Count       
              Sheet.Cells(j,i)=rst.Fields(i-1).Value
        Next i
        j=j+1
        rst.MoveNext
    Loop
    QueryData=True
    rst.Close
    conn.Close
End Function
(2)编写评分程序代码。
Rem 提取学生账套并评分,该函数返回
Public Function Score() As Double
    Dim CellCount As Integer
    Dim CorrectCells As Integer
    Dim iScore As Double      "计算分数
    Dim iRow As Double       "答案行数
    Dim iColumn As Double    "答案列数
    Dim i, j As Integer
    Rem 提取学生账套到sheet2表
    Dim Flag2 As Boolean
    Dim DataName As String
    Rem 取到学生账套数据库名称
    DataName="UFDATA_" & Trim(Worksheets(1).Cells(2, 2)) & "_" & Trim(Worksheets(1).Cells(3, 2))
    Flag2=QueryData(Sheet2, DataName)
    If Flag2=True Then MsgBox ("取数成功")
iRow=Worksheets(3).UsedRange.Rows.Count
    iColumn=Worksheets(3).UsedRange.Columns.Count
    CellCount=0
    CorrectCells=0
    iScore=0
    For i=1 To iRow
        For j=1 To iColumn
            If Worksheets(3).Cells(i, j) <> "" Then CellCount=CellCount + 1           
            If Worksheets(2).Cells(i, j)=Worksheets(3).Cells(i, j) And Worksheets(3).Cells(i, j) <> "" Then
                CorrectCells=CorrectCells + 1
            End If           
        Next j
    Next i
    iScore=100# ∗ CorrectCells / CellCount
    Score=iScore
End Function
(3)编写提取标准数据过程。
Rem 取标准账套数据到sheet3,并将内容隐藏
Public Sub GetAnswer()
    If Sheet3.Visible=xlSheetVisible Then
   
        Dim Flag1 As Boolean
        Flag1=QueryData(Sheet3, "UFDATA_888_
2011")
        If Flag1=True Then MsgBox ("取数成功")
        Sheet3.Visible=xlSheetHidden    Else
        MsgBox ("对不起,你没有权限提取标准数据!")
    End If
End Sub
(4)编写具体评分过程。
Rem 调用评分程序,并将分数显示到B4单元
Public Sub GetScore()
    Worksheets(1).Cells(4, 2)=Score()
End Sub
3. Excel设置实现。返回Excel工作簿的sheet1界面,做如图1所示设置。通过右击快捷工具栏,选择“窗体”命令,打开窗体控件面板,从中拖动命令按钮到sheet1的C2单元格位置并绘制合适大小放开鼠标后指定宏为GetAnswer,并将按钮文本修改为“提取标准数据”,用相同的方法在C3单元格位置,放置另一按钮,并将其宏指定为GetScore,并修改文本为“评分”。设置好后如图2所示。

 

 

 

 

 

 

教师可以在自己放置了标准账套的机器上点击“提取标准数据”按钮,从标准数据库中提取科目信息至sheet3表页上,当看到提示“取数成功”后sheet3被隐藏。此时教师可以将“提取标准数据”按钮删除,以防学生误按。同时将工作簿下发给学生,学生将账套号和会计年度输入后,直接点击“评分”按钮后B4单元格将显示学生所得的分数。笔者使用999账套实验后所得成绩如图3所示。

 

 

 


四、改进后的思考
本方法的优点:第一,由于大多数任课教师要求学生采用唯一的学号作为账套号,这样可以有效地杜绝学生实训中拷贝他人账套,有效地促进学生进行模拟操作。第二,通过本方法的应用,教师可以通过点击按钮直接得到学生的完成情况,省时又省力。第三,每次的检测可以提高学生实训的积极性,让学生有一种被监督的感觉,同时也给学生一种成就感。最后,由于可以直接提取标准账套数据,适用于教师随机给定资料,不受固定试题的限制。
如果要很好地使用本方法,一方面要求教师具有一定的Excel VBA文件使用经验,另一方面,要求教师应能够熟悉用友ERP-U872财务管理软件数据库的基本结构及相关表的组成。下表为用友ERP-U872环境下的部分常用的数据表。

 

 

 

 

 

会计电算化实训课程的考核形式的改革还有待进一步的探索,需要教师进行多方位多角度的尝试,通过不断创新改革,促进学生更有效地掌握相应的计算机操作技能。本文上述操作在windows XP和Excel 2003软件环境中调试通过。
主要参考文献
Excel Home.Excel 2010应用大全[M].北京:人民邮电出版社,2011.
陈莉,徐芳.基于VBA编程的网络教学试题库批量试题入研究[J].软件导刊,2015(4).
【基金项目】 浙江省2013年高等教育课堂教学改革项目“基于项目驱动导向的《会计电算化实训》课堂教学改革研究”(项目编号:kg2013848);浙江东方职业技术学院2013年院级重点建设课题“基于会计从业资格新考试模式的课程教学改革”(项目编号:DF201305);中国商业会计学会2014年度课题“‘岗证课对接、德能识共育’会计专业人才培养模式研究”(项目编号:KJ201436)