manbetx官方网站

VBA概述之在Office产品受创造好之应用程序。通过VBA检索AD中的用户。

九月 30th, 2018  |  英超

VBA概述

      VBA作为同种植被用当Microsoft
Office产品受之脚本语言,功能实在是颇有力的,这要归功给它们延续了Visual
Basic的洋洋优良传统,如我们得以于VBA工程中像VB
6一样引入类库或ActiveX控件。当然,你以VB
6中采取的零部件或控件也就好在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产品受到来执行的。

图片 1

    在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家族中之活开多起来)。

        VBA支持ADO,这吗表示我们得以VBA中操作数据库,包括SQL
Server、Access等。正缘如此,你可以品味着当Excel中修一个VBA程序来将Excel作为一个用以数据并的中件,该中间件好据此来齐应用程序与后台数据库被的多寡,并以其中开有拍卖。这是完全好成功的!我于前的一个类型受到尽管已开了这么的例子,我们还是通过Excel同步了SQL
Server和Sharepoint List之间的多少(这个我会以随之的一些受到重复开牵线)。

    从Office
2003起来,Microsoft在Office家族中逐年增多了广大活,如OneNote、Publisher、InforPath、Visio等,但是除了针对VBA中之靶子开展了扩大外,在VBA的用推广及并没有特别坏之改观,而且有些产品由于用及之题材啊未尝供对VBA的恢弘。

     
ADO的效用也不行有力,我们得当其中实行Windows脚本,经常使用的尽管是透过它来治本Windows
Server的AD,如所有历AD中之账户,批量修改AD中的账户等,这就远非呀好奇怪的了,你完全可以在Windows上应用记事本编写一个vbs脚本,然后直接下其来治本而服务器上之AD,当然,基于安全着想,这些还是要适量的执行权的。这些工作通过VBA也可以得,并且于Excel中您晤面意识有时候非常便利,如借用Excel现有的UI来表现所操作的数目;基于所查询的数码来生成图表;使用Excel提供的作用修改数据;遍历和团体数据的方便性等等…

    如今,Office
2007已经过来,并且于对VBA的支持上吧出现了一部分转移,随着Microsoft
.NET产品多样的不断扩大和深切,.NET也置于至Microsoft的逐条不同之成品受到,而其中VSTO就是专门对VBA于Office产品受运用的一个升官方案,我会以联网下的一对文章被朝读者介绍她。不过Excel仍然是Office家族中以VBA最普遍的制品,因此,我会以Excel为条例来介绍VBA的应用,并在Office
2007软件基础及举行有演示。

      下面我于来一个演示。在初的Sheet中补充加一个ActiveX
Button,然后上加下面的代码。

    首先来瞧我们使用VBA在Excel中好开些什么业务。

Private Sub
CommandButton1_Click()
    On Error Resume Next

   
Excel是同样款效果非常有力的用来拍卖表格数据的软件,它可以吃用来开过多两样之行事,如记录客户的讳以及学习者的考试分数、进行收支预算、分析实验数据、制作发货单和表格、通过加的多少统计图表等等,Excel的各种不同的效果为采用至各行各业,但产生某些是如出一辙的,那便是当要处理的数据量很挺时,所有的用户都指望让Excel可以充分明白地友好处理部分工作,“让Excel动起来”正是VBA可以办到的!

    Const ADS_SCOPE_SUBTREE = 2
    
    Set objConnection = CreateObject(“ADODB.Connection”)
    Set objCommand = CreateObject(“ADODB.Command”)
    objConnection.Provider = “ADsDSOObject”
    objConnection.Open “Active Directory Provider”
    Set objCommand.ActiveConnection =
objConnection
    
    objCommand.Properties(“Page
Size”) = 1000
    objCommand.Properties(“Searchscope”)
= ADS_SCOPE_SUBTREE
    
    objCommand.CommandText = _
        “SELECT Name FROM ‘LDAP://dc=XXX,dc=com’ WHERE
objectCategory=’user'” ‘search all
users from the domn XXX
    Set
objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst
    
    Dim currCell As Range
    Set currCell =
Range(“A1”)
    
    Do Until objRecordSet.EOF
        currCell.Value = objRecordSet.fields(“Name”).Value
        Set currCell =
currCell.Offset(1, 0)
        objRecordSet.MoveNext
    Loop
End Sub

   
例如我们好描绘一个VBA程序来格式化报表,并将它们打印出来,经过开发与测试,我们最后可以只用一个令就到位所有的劳作,而未用好下手去一个个地敲命令、点击鼠标查找菜单…Excel可以在刹那间完结所有的做事,何乐而无也耶?

     
代码中自己使用了一个假象的所在名称XXX,读者如果想如果测试可拿那个转移化真正的域名称。我们下ADO对所指定的地区进行了用户查询,并将域中颇具用户的Name依次输出到Excel当前Sheet的率先排着,下面是出口结果的有些截图。

 

图片 2

VBA在Excel中的几乎种习惯用法

      有关如何通过脚本操作AD,读者可以参见一下Microsoft的官方文档http://www.microsoft.com/technet/scriptcenter/guide/sas_usr_ykxh.mspx?mfr=true

    先看看我们于Excel中经常会用到的VBA:

      如果权力允许,稍微修改一下地方的代码,完全可实现批量修改AD中之账户的职能,鉴于公司网络环境,这里不便宜开展测试了,读者如果出标准化可以协调尝试。

    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程序了。

图片 3
图片 4
图片 5

   
为了为您的VBA程序还是宏代码能够如愿运作,你待肯定一下宏的行安全设置。点击“宏安全性”,在对话框中摘“启用所有宏”,并勾选“信任对VBA工程目标模型的造访”。现在咱们可完全自由地失去编写我们的VBA程序了。

图片 6    
点击Visual
Basic,可以打开VB编辑器(简称VBE),我们的几乎有的VBA代码都是以这边修的。当然,如果你曾是同一位VB程序员,那么您晤面对是编辑界面再熟悉而了,它几乎就是和VB
6的编制界面一样,也发出工窗口、属性窗口及代码窗口,在此地我们一致可以上加控件、引用、模块和Excel对象等要素。另外,通过甄选代码编辑窗口上的点滴独下拉列表,我们得吧歧目标的不同事件编写代码。所谓事件,就是我们于点击或选择控件时所好的同一雨后春笋动作,如命按钮的点击事件,下拉列表下拉起之抉择,复选框或单选框的选取相当。

图片 7    
有关如何编写VB代码以及VB代码的主导特色都休是本文要讨论的内容(事实上这些情节大家以习电脑编程基础知识时为已还询问了了),这里只有对在Excel中运用VBA的有情形召开一下介绍。

    1.
VBA中将Excel录制的宏写到一个VBA模块中(先了解摸底什么叫做VB模块),它已包含了平名目繁多独立的命,可以当一个VBA过程让调用。

    2.
一个VBA模块出广大“子过程”组成,它执行了“对象”上之组成部分操作,可以独自运转。例如我们以Excel
Sheet上补偿加一个Active控件(注意大多数时分咱们于VBA中所利用的都是Active控件而无是表单控件),比如添加一个发令按钮,双击它,在代码编辑窗口被便可以加上相应的一声令下了。下面的代码是当用户点击命令按钮后提醒1+1底结果。

图片 8

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主界面,退出设计模式(只需要重点击“设计模式”按钮即可),点击我们刚才添加底命按钮,屏幕上起了俺们刚刚在代码中添加的对话框。

图片 9   
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提供的援助)

标签:

Your Comments

近期评论

    功能


    网站地图xml地图