(陕西国防工业职业技术学院电子信息系,西安,710302)
Excel VBA在办公自动化中的应用
李小遐
(陕西国防工业职业技术学院电子信息系,西安,710302)
Excel是办公软件Office中的一款,它以优秀的数据录入功能和强大的数据处理和分析功能深受广大办公人员的喜爱。在Excel中使用VBA,能够高效率地实现数据处理的自动化,将工作人员从简单而重复的数据处理工作中解脱出来,更能通过VBA编程对Excel进行二次开发,实现很多高级功能,提高办公效率。
Excel;VBA;宏;办公自动化
VBA(Visual Basic for Application)是新一代标准宏语言,由微软公司开发出来,在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。所谓应用程序自动化,是指通过编写程序让常规应用程序(如Excel、Word等)自动完成工作,例如在Excel里自动设置单元格格式或者多张工作表之间自动进行计算等等。VBA是基于Visual Basic(VB)发展而来的,是VB的一个子集,与VB一样是属于面向对象的编程语言,VBA继承了VB的开发机制,与VB有着相似的语言结构和开发环境。VBA与VB的不同之处在于,VBA是Office办公软件内嵌的编程语言,所以VBA代码必须“寄生”在宿主应用程序中运行,不能生成独立的应用程序。VBA根据其嵌入软件的不同,增加了对相应软件中的对象的控制功能,正是因为如此,VBA最适于定制已有的桌面应用程序。
Excel是最早支持VBA的组件,Excel VBA作为一种扩展工具,在办公中得到了越来越广泛的应用,原因在于,很多实际应用中复杂的Excel操作都可以利用VBA编程得到简化。迄今为止,在 Excel 中使用 VBA 最常见的原因就是自动完成重复的工作,当然VBA 不仅仅可用于重复任务,还可以构建 Excel 的新功能,例如可以开发新算法来分析数据,然后使用 Excel 中的图表功能显示结果,也可以执行将 Excel 与其他 Office 应用程序集成的任务。事实上,在所有 Office 应用程序中,Excel 最常用作一个类似于常规开发平台,除了所有涉及列表和会计的显而易见的任务之外,从数据可视化到软件原型制作的大量任务中,开发人员都可使用VBA对Excel进行二次开发。
VBA是一种宏语言,是通过运行宏来工作的。如果需要在Excel中频繁执行某项工作,使用宏是最简单的方法。宏是可用于自动执行任务的一项或一组操作,其本质是由一系列VBA命令组成的程序,通过宏可以将一系列Excel操作组合在一起,形成一个命令,以实现任务的自动化。在Excel中创建宏有两种方法,即录制宏和用VBA语言编写宏代码。
3.1 录制宏代码
在Excel2010中,利用“视图”选项卡中“宏”组中的“录制宏”按钮,在“录制新宏”对话框中,设置宏的名称、保存位置以及快捷键,再单击“确定”按钮,就可以开始宏录制,此时“录制宏”按钮状态变成了“停止制”,点击该按钮即可完成宏录制。宏录制好后,使用快捷键即可运行宏。在录制宏的过程中,Excel将操作转换为VBA代码保存在宏中,运行宏时,Excel驱动这些代码自动完成记录的操作。使用
Sub 宏1()
' 快捷键: Ctrl+k
With Selection.Font
.Name = "黑体"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Selection.Font.Bold = True
End Sub
上述代码片段中加下划线的部分就是多余的代码,可以全部删除,仅保留需要设置效果的3个语句,执行的效果与之前是完全一致的。当然修改宏代码需要有一定的VBA基础,所以说,录制宏对不熟悉VBA编程的人员来说无疑是非常方便的,对于学习VBA编程也有很大帮助。
3.2 编写宏代码
录制的宏可以忠诚地记录Excel 操作,但有其自身的局限性,如录制的宏不够智能化,无法交互工作,代码冗长,没有判断和循环能力,只能简单执行等,因此对于一些无法录制的复杂操作,就需要在VBE窗口中使用VBA代码直接编写,然后将宏分配给VBA对象,如按钮、图形、控件和快捷键等,这样执行宏就像点击按钮或快捷键一样简单。以下通过一个具体的应用案例进行说明。
实现功能:库存预期报警。问题描述:Excel工作表中存放着所有商品的库存信息,A列为名称,B列为计量单位,C列为目前库存数量,库管人员提供某个商品名称和最小库存数量时,低于这个数值的库存数量单元格自动变为红色、加粗,给出库存报警提示。
实现这个功能的最佳途径是通过按钮运行宏。在库存工作表中添加一个命令按钮,把这个按钮指定给宏,用VBA编写宏代码,实现当库管人员点击按钮时会弹出对话框,在对话框里输入要查询的商品名称和报警数值,如果库存量不够的话给出提示,VBA代码如下所示。
Sub 库存_Click()
Dim Mc As String
Dim x&, y&
Mc = InputBox("请输入名称:")
y = InputBox("请输入报警数量:")
For x = 2 To Range("A65536").End(xlUp).Row
If Cells(x, 1) = Mc And Cells(x, 3) <= y Then
Cells(x, 3).Font.ColorIndex = 3
Cells(x, 3).Font.Bold = True
End If
Next x
End Sub
在Excel2010中,如果要编写宏、运行以前录制的宏或者用VBA创建与Office程序一起使用的应用程序,需要将“开发工具”选项卡显示出来,与早期的Excel版本有所不同,Excel2010的默认环境中,“开发工具”选项卡是隐藏的。操作方法是点击“文件-选项-自定义功能区”,选中“开发工具”复选框,确定后即可在Excel窗口中看到“开发工具”选项卡,然后在“控件”组的“插入”按钮里选择“按钮”窗体控件,即可在工作表中添加一个命令按钮。
3.3 自定义功能区
日常办公应用中,除了经常使用快捷键和按钮运行宏以外,还有一个显为人知的快捷方法,即就是自定义功能区,然后把日常用到的一些功能定义成工具按钮,以后工作时就可以同标准工具按钮一样点击即可。操作方法是点击“文件-选项-自定义功能区”,在打开的“Excel选项”对话框中进行功能区和组的创建。操作时要在“主选项卡”中添加新建选项卡和新建组并重命名为一个合适的的名称,然后把“常用命令”文本框中的宏添加到新建组中。设置完成后即可在Excel窗口看到新建的功能区以及其中的工具按钮,并且这个设置对本地机的任何一个Excel工作薄都是有效的。以下通过一个具体的应用案例进行说明。
实现功能:隔行格式化工作表。问题描述:Excel工作表中有多行数据,为了便于阅读和使用,需要把工作表设置为隔行一致的效果,比如隔行添加黄色底纹。这个工作用手工方法也能完成,但是比较枯燥还浪费时间,在此使用VBA编写宏代码,然后按照上述方法,把宏定义成工具按钮,操作时先选中要设置的区域,直接单击该按钮即可调用绑定的VBA代码,实现一键设置。VBA程序代码如下所示。
Sub Colorsheet()
Dim i As Long
For i = 1 To Application.Selection.Rows.Count
If i Mod 2 = 1 Then
Selection.Rows(i).Interior.Color = RGB(255, 255, 120)
End If
Next i
End Sub
VBA语言要素非常多,不论是使用VBA代码创建宏,还是修改录制宏时产生的代码都需要具备一定VBA或VB编程基础,文中仅通过3个应用实例说明用VBA编程解决问题的思路。对办公人员来说,除了掌握Excel自身强大的数据处理功能外,适当地学习了解一些VBA编程知识,对提高工作效率,解放自己的双手是非常有帮助的。
[1] 伍云辉.精通Excel VBA[M]. 北京:电子工业出版社.2013(5)
[2] 姚文涛.ExcelVBA应用开发经典案例[M]. 北京:清华大学出版社.2009(7)
[3] 陈军民.Excel VBA在Office中的应用案例[J].电脑知识与技术.2013(4)
[4] 王东燕.用Excel的宏和VBA实现方便快捷的调查统计[J].办公自动化.2010(11)
[5] 杨群.ExcelVBA应用实战技巧[M].北京:清华大学出版社.2013(4)
Application of Excel VBA in office automation
Li Xiaoxia
(Shaanxi Institute Of Technology,Xi'an,710302)
Excel is a software Office,it deeply to the data input function excellent and powerful data processing andanalysis function of the office personnel's affection.The use of VBA in Excel,can effectively realize the automationof data processing,the data processing work relief staff from simple and repeated in and out,can through the VBA programming for two Excel to develop, realize manyadvanced functions,improve office efficiency.
Excel;VBA;Macro;Office automation
李小遐(1968-),女,副教授,陕西省户县,研究方向为计算机技术及应用。