基于ExcelVBA的数据处理软件开发 下载本文

内容发布更新时间 : 2024/4/27 15:21:55星期一 下面是文章的全部内容请认真阅读。

龙源期刊网 http://www.qikan.com.cn

基于ExcelVBA的数据处理软件开发

作者:常广炎 杨彬

来源:《电脑知识与技术》2014年第22期

摘要:Excel VBA编程通过对Excel自身功能的集成和扩展可以较为快捷高效地形成一个完整的数据处理软件,用于解决重复或复杂数据的处理。该文以财务预算数据处理软件开发为实例,简要论述了Excel VBA开发数据处理软件的设计思路、技术要点和方法,同时还列举了一些通用代码供大家参考和使用。 关键词:宏;VBA;SQL;ADO

中图分类号:TP311 文献标识码: A 文章编号:1009-3044(2014)22-5209-04

数据处理是单位财务工作日常工作的重要部分,现有很多知名的财务管理软件在单位财务管理中起着重要的作用,但具体到某一项应用时,由于单位情况不同,不一定完全适用,有必要自行开发一些这类功能单一,实际需求这类数据处理软件,由于使用的局限性和经费的原因,不可能花费大量的人力、财力去研发,所以寻求一种简单、高效、低成本的开发方法非常有意义的。笔者认为Excel VBA编程是一种值得推荐的方法,Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程式功能,利用VBA可使Microsoft Office软件的应用更高效率。

1 软件开发的关键技术

VBA是建立在Office软件上的应用开发工具,其基本框架包括语句、对象、方法、属性、事件等。

1) VBA基本语句

宏程序语句用来运行后可以完成一个功能。例如: Sub test() '开始语句 Range(\) = 10 End Sub '结束语句 2) VBA对象

龙源期刊网 http://www.qikan.com.cn

VBA中的对象其实就是我们操作的具有方法、属性的excel中支持的个体,Excel中的几个常用对象表示方法:

工作簿: Workbooks 代表工作簿集合,所有的工作簿; Workbooks(N),表示激活第N个工作簿; Workbooks (\工作簿名称\) 某个工作簿; 工作表:Sheets(\工作表名称\) 表示某个工作表; Sheets(n) 表示按排列顺序,第n个工作表; ActiveSheet 表示活动工作表,光标所在工作表; 单元格:cells 所有单元格;

Range (\单元格地址\) 使用引用区域确定单元格; Cells(行数,列数) 使用引用整行、整列确定单元格; 3) VBA属性

就是VBA对象所具有的特点,表示某个对象的属性是:对象.属性=属性值。例如:Sheets(1).Name = \工作表改名了\工作表改名 4) VBA方法

是作用于VBA对象上的动作,表示用某个方法作用于VBA的对象上,可以用下面的格式:对象.方法 参数值名称:=参数值

例如:Sheet1.Move before:=Sheets(\) 将工作表sheet1移至工作表sheet3之前。 2 软件设计目标

本软件是用来完成单位各部门财务预算处理的。根据各部门实际的支出,财务部门用来控制各部门的支出情况。原始记录如表1:

根据原始记录,当选择部门名称和预算分项名称时即可查询出该部门该项预算的信息,并根据查询结果决定该项是否可支出,支出后更新数据表,来控制部门预算的执行。 3 软件实现

龙源期刊网 http://www.qikan.com.cn

根据上述介绍方法,系统框图如图1,该系统后台使用Microsoft Office Access数据库,数据表结构如表2。

2) 鼠标右Office按钮→自定义快速访问工具栏→公式→启用迭代计算→最多迭代次数输入1。

Excel2003:(1)点击菜单“工具→宏→安全性”,在安全性对话框中选择“低”。 2) 点击菜单→工具→选项→重新计算,把迭代√一下→最多迭代次数输入1。 由于篇幅关系,数据输入模块省略,读者可参考下面更新事件来完成数据输入。 预算处理界面如图2,可查询某部门的预算执行情况,并处理帐务。 查询按钮的click事件代码如下: Private Sub CommandButton2_Click() On Error GoTo errorcheck Dim mydata As New Data查询 Dim sql As String, arr, x, y, sk

If mydata.是否存在(\, \部门\, [b6]) = False Then MsgBox \该部门不存在\ Exit Sub Else

Application.EnableEvents = False Range(\:f33\) = \

sql = \部门='\([b6]) & \名称='\([d6]) & \

arr = mydata.筛选结果(sql) [f6] = arr(7, 0)