VBA概述之以Office产品受到开创和谐之应用程序

VBA概述

    VBA(Visual Basic For
Application)是VB语言在Office产品受的用,它根据Visual Basic For
Windows发展要来,Visual Basic For
Windows是Microsoft于1992年出的支出Windows应用程序的次设计语言,由于语言精炼,易用易学,所以被用户的迎。而VBA的语法结构与Visual
Basic For Windows基本相似,但其中间是有本质区别的,Visual Basic For
Windows是一样种植编程语言,它好创造独立的应用程序,而VBA是同等种植语法结构类似于Visual
Basic For
Windows的脚本语言,一般的话,它都是让撂在Microsoft的Office产品受来施行之。

    在Office
2000之前,VBA于Word、Excel、Access等Office系统软件中之运用是休相同的(那个时刻Office家族中之制品为数不多),但是到Office
2000不怕联合起来了。Excel是第一单饱含有VBA的Office产品,也是迄今为止以VBA最常见的软件之一。自Office
2000以后,Excel、Word、PowerPoint、Access中已产生矣统一标准的宏语言VBA,其中Excel和Access的VBA最为成熟(从Office
2000起来,Office家族中之产品开多起来)。

    从Office
2003从头,Microsoft在Office家族中日渐多了广大产品,如OneNote、Publisher、InforPath、Visio等,但是除此之外对VBA中的靶子进行了扩大外,在VBA的利用推广上并无专门可怜的变动,而且有些产品由应用及之问题吧不曾提供针对性VBA的扩大。

    如今,Office
2007业已来,并且于对VBA的支撑及吗应运而生了有的变,随着Microsoft
.NET产品多元的不断扩大和深刻,.NET也坐至Microsoft的顺序不同的活面临,而中VSTO就是特地针对VBA在Office产品受以之一个升官方案,我会以接下的有的文章被向读者介绍其。不过Excel仍然是Office家族中利用VBA最广的制品,因此,我会以Excel为条例来介绍VBA的采用,并当Office
2007软件基础及做一些演示。

    首先来看望我们下VBA以Excel中可以举行来什么工作。

   
Excel是同缓功能十分强劲的用来拍卖表格数据的软件,它可以于用来做过多不比之劳作,如记录客户的名字以及学习者的考试分数、进行收支预算、分析实验数据、制作发货单和表格、通过加的数据统计图表等等,Excel的各种不同之效能为采用至各行各业,但生几许凡是一律之,那就算是当要拍卖的数据量很老时,所有的用户还盼望让Excel可以十分明白地好处理部分事务,“让Excel动起来”正是VBA可以办到的!

   
例如我们得以描绘一个VBA程序来格式化报表,并将她打印出来,经过开发和测试,我们最后得以只用一个下令就完事有的行事,而未用自己动手去一个个地敲命令、点击鼠标查找菜单…Excel可以在刹那间得所有的做事,何乐而未呢也?

 

VBA于Excel中的几乎栽习惯用法

    先看我们以Excel中时会因此到的VBA:

    1.
一再插入文本。如果您时常需要在报表里安插入一段子文本,如铺的名、版权信息等,你尽管可描绘一个VBA程序来代表你开就起事。当然这再度略不了了,类似之情况会起很多,例如你还足以让VBA帮助您插入企业所有职工的人名(这些消息或来自一个网站或数据库)。

    2.
自行完成反复的做事。如果你是同等叫销售经营,需要常形容一客“月底销售报告”递交给业主,如果这些报表里之数目来自与一个地方,并且表格的体制没有专门大的转移,那么您完全好经VBA编写一个逻辑,让Excel自己去采访这些信息然后生成一布置良的表格,而此时刻里而要去举行其他更要紧的作业,要么以一面舒舒服服地吆喝相同盏咖啡看在电脑也您关系活儿。而老板啊会否汝生这般高的工作效率而针对性君任何眼相看。

    3.
录制宏就同样之动作。Excel中之宏其实也是VBA应用的平等种,它是由Excel自动根据你所指定的命生成的VBA代码,执行这些代码就一定给行了这些命令。在Excel中,我们于一个表格里开了一起工作,同时录制了一个庞大,然后可以于另的报表里往往实践之特大,Excel可以毫无保留地帮我们以这项工作“复制”在有着的表里。

    4.
自定义命令。在Excel中,我们得管反复要运用的同文山会海操作写到一个宏里,然后绑定到快捷键或按钮上,以后才待运用一个快捷键或点击一个按钮就好长足地完成同样密密麻麻令。

    5.
起定义工具栏。听起有些不可思议!我们可由此VBA编写的代码在Excel的工具栏上停放自己的按钮,随时点击它。

    6.
由定义菜单。不仅可以定制工具栏,我们居然足以经过VBA将团结的指令放到Excel的菜系上,是匪是不行强啊?

    7.
打造数据表模板。通过打造数据表模板来帮那些Excel初家还快地做到工作,以减少他们所浪费之时刻。

    8.
从今定义工作表函数。虽然Excel拥有多的效应函数(如Sum何Average等),但连接以实际上的用被显不够,我们可由此VBA添加自己的机能函数,用来成功有特定的精打细算,从而简化计算过程。

    9.
付出了是因为宏来驱动之应用。花点时间,VBA还好吃你做过多巨型的应用程序,包括定制对话框、OnScreen
Help、数据并、数据收集器,以及另外更多之效应组件。

    10.
制全属于自己之Excel插件。Excel本身的插件都重重了,通常状态下还足够用,不过我们还是得以经过VBA开发属于自己的专有插件。Excel中因故来扭转统计图表的功效就是一个插件,叫Analysis
ToolPak。

   
通过VBA可以开发Excel的大队人马功能,甚至于访问网络资源、遍历Windows域、访问远程机器上的文件等,只要去认真研讨VBA语言本身提供的对象,我们尚可以发现更多让人惊讶之东西。VBA真的良强大!

 

VBA的优缺点

   
前面说了那基本上VBA可以举行的事体(尽管还远远不止这些),那么VBA到底好于哪些地方呢?Excel几乎会自动完成所有你想做的从事,只要能够写出Excel命令,它便得做到功能,所以VBA的自动化就反映了底这些亮点:

    1.
Excel于自动化具体任务时代码执行的一一不变换(有的时候这看起却一宗善事)。

    2.
足以得之是,让Excel自动化一码工作自然比手动去完而赶快得差不多(我想没丁乐意手动去做到那些繁琐而重复性的做事)。

    3.
使拥有类似完美的宏代码,Excel会永远无故障地运作(不了其他代码都是产生欠缺的)。

    4.
任何人都好用Excel自动化一桩具体做事,即使他向不了解电脑编程(Excel的宏录制功能帮了深十分之无暇)。

    5.
众接近不太可能做到的事体都得以用Excel做得漂漂亮亮的(前段时间我刚刚用Excel为一个网站做了一个前台数据录入工具)。

    6.
对那些既费时还要消费精力的事,你又为非用为于电脑前郁闷了,调用一个VBA编写的一声令下,剩下的事体你虽毫无管了,出去放松一下咔嚓。

   
当然,就如拥有的编程语言同样,VBA也会生一对弱点,从以之角度来拘禁有以下几点(其它不好的地方应为都自Visual
Basic For Windows那里继承过来了):

    1.
Excel的宏虽然可以呢你自动生成有VBA代码,但大多数早晚要得你自己去编写代码用这些成效团体起,如果您从未一点编程经验的语句,这个对君吧也许有点为难。不过还好,VBA学起来还是特别爱之。

    2.
思念使运行VBA必须使先期安装Office软件,尤其是Excel。它不容许像Visual Basic
For
Windows程序那样就待双击一个exe文件就能够执行起来(这看来也是脚本语言的局限性)。

    3.
VBA是转之,在不同的Office版本中,VBA都来一部分轻的更动,这将导致您于Office
2000吃编辑的VBA代码在Office 2003被无法对实施,反过来也同。

 

在Excel中开始VBA程序

    我所示范与支付测试的环境还是起家于Excel
2007臻,读者如果想演练,最好为以一如既往的软件条件下。

    首先打开Excel,默认安装配置下Excel
2007不曾亮“开发工具”菜单,我们需要开辟它。点击窗体左上较量的“Office按钮”,选择“Excel选项”,在对话框中选取“常用”选项卡,勾选“在功能区显示‘开发工具’选项卡(D)”,确定。现在我们在Excel的菜单区就可以看到“开发工具”了,点击它,就可初步我们的VBA程序了。

发展历史 1
发展历史 2
发展历史 3

   
为了给您的VBA程序还是宏代码能够顺畅运作,你要肯定一下宏的履行安全设置。点击“宏安全性”,在对话框中选取“启用所有宏”,并勾选“信任对VBA工程目标模型的拜会”。现在咱们得以了自由地去编写我们的VBA程序了。

发展历史 4    
点击Visual
Basic,可以打开VB编辑器(简称VBE),我们的几乎拥有的VBA代码都是于此修的。当然,如果您既是同等个VB程序员,那么你见面针对之编辑界面再熟悉不过了,它几乎就和VB
6的编辑界面一样,也发生工窗口、属性窗口及代码窗口,在此间我们同好加加控件、引用、模块和Excel对象等因素。另外,通过增选代码编辑窗口上的简单单下拉列表,我们得以呢歧对象的两样事件编写代码。所谓事件,就是我们于点击或选择控件时所好的如出一辙层层动作,如命按钮的点击事件,下拉列表下拉起的挑,复选框或单选框的选当。

发展历史 5    
有关如何编写VB代码以及VB代码的中心特征都不是本文要讨论的情(事实上这些情节大家以上学电脑编程基础知识时为已还了解了了),这里只针对在Excel中采用VBA的一对场面做一下介绍。

    1.
VBA中将Excel录制的宏写到一个VBA模块中(先了解了解什么叫VB模块),它已经包含了一致系列独立的指令,可以当做一个VBA过程被调用。

    2.
一个VBA模块出那么些“子过程”组成,它实施了“对象”上的一对操作,可以独立运转。例如我们当Excel
Sheet上加加一个Active控件(注意大多数时节咱们于VBA中所祭的且是Active控件而无是表单控件),比如添加一个命按钮,双击它,在代码编辑窗口中虽可以添加相应的下令了。下面的代码是当用户点击命令按钮后提醒1+1之结果。

发展历史 6

Private Sub
CommandButton1_Click()
    Dim sum As Integer
    sum = 1 + 1
    MsgBox “The answer
is ” & sum
End Sub

   
Excel中得以利用的Active控件不是专门多,这也意味着了于VBA中用户对UI的决定没有特别多的选择,当然,如果您的微处理器及登记了别样可用之Active控件,只要允许,你完全也可以将她引用到Excel中,只要点击“Active控件”中之末段一个图标,在对话框中摘而引用的Active控件即可。VBA中控件的运用以及VB中一样,这里虽不再一一介绍了。回到Excel主界面,退出设计模式(只需要更点击“设计模式”按钮即可),点击我们刚才添加的下令按钮,屏幕及冒出了咱们刚刚在代码中丰富的对话框。

发展历史 7   
3.
VBA模块中有好多的函数,函数一般返回单一值,它既是可以于别的模块调用,也堪当作工作表函数来运。

    4. VBA提供了众底曾出目标,其中包括了WorkBook、WorkSheet、Cell
Range、Chart以及Shape等关键目标。

    5.
Excel对象来那个本人的层次结构。一个靶好涵盖其他的目标,占据层次结构最上方的是Excel,而它自身即是一个对象,在代码中叫做Application,它蕴含了WorkBook和CommandBar等根本目标,WorkBook则还要富含了WorkSheet和Chart等对象,WorkSheet又噙了Range和PivotTable等对象…这些层次结构的对象成了我们VBA代码的中坚有。

    6.
同类对象组织于一道就是形成了集聚,如WorkBook中含有的有WorkSheet被喻为WorkSheet集合,而Chart集合则由于全体的Chart对象成。

    7.
是层次结构中的对象都得于VBA中动用,跟大部分面向目标语言同样(虽然VB和VBA还免克叫称完全意义上之面向对象语言),我们应用“.”运算符来调用。如Application.WorkBooks(“Book1.xls”),它代表WorkBooks集合中的一个称呼也Book1.xls之靶子(该对象呢一个Excel文件),然后我们好当斯目标中援Sheet对象,如Application.WorkBooks(“Books.xls”).WorkSheets(“Sheet1”)。如果想愈指定一个切实的不过元格,就好这么Application.WorkBooks(“Books.xls”).WorkSheets(“Sheet1”).Range(“A1”)。

    8.
Excel中的当前倒目标好为我们在代码中采用同样种便民的方式来调用对象。如果Book1.xls就是是目前着编辑的工作表,那么刚才咱们引用对象的点子尽管可简写为WorkSheets(“Sheet1”).Range(“A1”)。当然,如果手上编制的工作表就是Sheet1,可以一直写成Range(“A1”)。

    9.
Excel挨各种对象都发出那个自己的性质。对象的习性可以了解啊对象的安项,即便是一个单元格(Range),也生它们自己之性,如Value(单元格的目前价)和Address(单元格于劳作表中的地方)等。HasTitle(是否包含标题)和Type(图表类型)则是Chart对象的性质。VBA允许用户判断或转移对象的属于性值。

 

    10.
于以对象属性时,必须用“.”运算符来连接对象名与属性名,如WorkSheets(“Sheet1”).Range(“A1”).Value可以查阅当前工作表Sheet1蒙单元格A1底手上值。

    11.

变量赋值。同VB代码一样,在VBA代码中允许采取变量来囤数价、文本及目标,如interest

WorkSheets(“Sheet1”).Range(“A1”).Value将工作表Sheet1的单元格A1的价赋值给一个interest变量。

    12.
目标还连了可在那个达成调用的道。所谓方法,就是Excel在靶及得以实行的动作,如ClearContents被用来消除Range内的内容。

    13.
计的调用和性能之博类,也需采用“.”运算符,如WorkSheets(“Sheet1”).Range(“A1”).ClearContents。

    14.
VBA包含了当代编程语言的拥有语言结构,如数组、分支组织、循环结构、集合对象等。

   
通过上述有简的介绍,相信读者既指向VBA有矣一个大概的摸底,我于后面的章中以会陆续介绍VBA发展历史中之有的目标和用法。

 

Excel简史

   
我道还是有必要当此间介绍一下Excel之提高历史,因为不同版本的Excel对VBA的支持是未均等的。

    1. Excel
2:在Windows平台上,Excel最初步之版本号是2,这是为了跟Mac平台达成之Excel保持版本相同。Excel
2诞生让1987年,不过新兴几乎从未人再次就此她。

    2. Excel 3:于1990年最后公布,其中XLM宏语言也跟着一起发布。

    3. Excel 4:于1992年新面试,继续包含了XLM宏语言。

    4. Excel 5:1994年上半年问世,VBA第一潮以是版中露面。

    5. Excel 95:从技术角度谈应该是Excel 7(其中并未Excel
6这个本子),该本被1995年夏天开头问世,是一个32员的版本,运行于Windows
95和NT平台上,其中增强了片VBA的机能,并蝉联支持XLM。不过,Excel
95之文档格式和Excel 5相同。

    6. Excel 97:也得于称为Excel 8,诞生为1997年一月,需要Windows
95和NT的支持。在这版本中,VBA于职能上闹了生老之增高,其接口几乎全受重新设计了,同时其还采用了新的文件格式(之前的版本不可知开拓这种格式)。

    7. Excel 2000:即Excel
9,于1999年6月宣告,仅提高了一点点功能,不过当用户体验方面改进了诸多,尤其是网用户。

    8. Excel 2002:也叫Excel 10或者Excel
XP,于2001年下半年公布。在此本子中极充分的特点就是是数据恢复(即Excel崩溃后方可自动恢复崩溃之前的多少),同时其吧是第一个以版权保护之版本。

    9. Excel 2003:Excel
11,这该是眼下的话使用人口最多之本子,也是无与伦比成熟的本,不过较前同一版本而言它并不曾长什么新特点。

    10. Excel 2007:随Office
2007产品同时公布,这个本子有矣杀挺的改,除了界面风格的转他,还加了本颜色筛选和排序的功效(这不过是独十分有因此的效力,我在Excel
2003之时段还一度为此VBA开发过类似于如此的效应),同时,Office
2007底系列产品在文件格式上啊有矣好老的转,Excel
2007底公文后缀为xlsx,它是一样种植截然公之于世之支撑XML可扩大的文件格式,这里发出同样篇稿子介绍了Excel
2007之这种新文件格式。

http://blog.excelhome.net/user1/fanjy/archives/2007/940.html

   
了解Excel的前进历史及一一版本的两样是那个关键之,因为我们需要确保不同版本的Excel对VBA的支持情况,避免别人当动我们编辑的VBA程序时起莫名其妙的不当,如VBA的Split函数是以Excel
2000饱受才引入的,如果以Excel
2000之前的本子被使带有Split函数的VBA程序,则会油然而生编译错误。

 

结语

   
VBA于Excel中之运用很广泛,深入摸底并以VBA,可以大大提高我们在使用Excel时的工作效率,达到意想不到的机能。另外,顺便还要说一样句,Excel在对不同的数据类型时得以保留也歧档次的文本,在含有VBA的Excel文件中,为了保险以后能够顺畅打开文件并执行中的VBA代码,建议读者将Excel文件保留也xlsm类型(它表示无异种植启用宏的工作簿)。

   
本文就是一个开业,简单介绍了VBA的升华历史和以范围,并举例说明了一下什么样在Excel中编辑并运行自己之VBA程序,接下去我会详细向大家介绍VBA中丰富多彩的目标的运方式,其中大家呢会见视部分难以想象的效果,不过就都死粗略,毕竟VBA只是本子,它并无复杂!

 

(在此感谢好友杨智——Jeffrey R. Young提供的扶植)

发表评论

电子邮件地址不会被公开。 必填项已用*标注