深入浅出Excel VBA完整版(2).docx
《深入浅出Excel VBA完整版(2).docx》由会员分享,可在线阅读,更多相关《深入浅出Excel VBA完整版(2).docx(5页珍藏版)》请在第一文库网上搜索。
1、第20章天地的无穷那些未及细8一20.1类模块与自定义类VBA交供的每奥对象都能够代表Office软件的某个部分,因此只借调用一个对象的方法和属住,就能够操控OrTkC的一个功能和设置。而利用外部对象,则可以创建字典、正,长达式、ADO数据库访问组件、Xm1HnP网络访问组件等强大的工具,实现更加丰富的功能。而且,我们还可以在VBA中通过类模块创建自己的类,并像使用任何内外部对象一样,在VBA程序中创建和使用这些自定义类的对象。具体步骤为:(I)在VBA工程中插入一个类模块,并使用属怏窗口将该模块的名字修改为想使用的类名;(2)双击类模块,在其代码窗口中定义模块级变量和子过程。模块级变量将皴凌
2、作该类的属性,而子过程则被视为其方法;(3)在其他VBA过程(比如标准模块中的宏、Exce1对象事件响应及窗体代码等)中,先定义该类型变量,并使用New关键字创建实际的对象。然后即可调用其属性与方法,如同使用Co11ectionWorksheet等对象O比如图20所示的程序中创建了个名为“StUdCntRCCord”的类(类模块名称即类名),用来代表图中工作表的一行学生记录。该类共定义了4个属性:ID、Name.Grade和EmaiI,并且拥有一个名为WrIMnWROW的方法,可以把这4个属性的数值写入工作表指定行的B列至E列中。StudentReconi类变的变stu并调用它的WriIC1n
3、toROW万法将一个完整的学生信息保存到工作表的第六行中(图20.1中的最后一行赵六)。图20.2在VBA过程中使用自定义类示例当然,即使完全不使用类模块,只用最基础的VBA知识也可以实现本咧的现篮。面向对象与面向结构都可以完成同样的任务,而面向对象思想的优势则在于可以让程序的架构更加清新,调用更加着明。在这个例子中,子过程DemO_22只是、tu象:谪将你的僖息保本表第六行.而将箕保存到哪一列及怎样像存等,都分包给MU对象自己去解决,做到了各司其JR这种优势在这样的小程序中体现得并不显著,但是在编写震杂的系统时就会体现出来。此外,如IUMr将来要开发一些第三方姐件或控件,如PDF阅读器控件等
4、,就需襄将这些蛆件编写为自定义类。不过需要说明的是,在VBA卬虽然经常用到类与对象,但并不支持1继承”弟载”等全要的面向对象特性,所以实际上只是基于对象,并不是真正完整地面向对象开发二具C因此,自定义类在VBA开发中的重要性也随之降低,很少有使用的必要。这也是为什么包括本书在内的大多数VBA教材都没有太多关注自定义类的原因。20.2开发小型管理信息系统随着编程能力的提高,很多初学者都不再满足于编写一两个小程序,而是等望开发出具备多个功能,而且能够覆盖自己的全部日常工作的综合性系统,也就是所谓的管理信息系统(M1S,ManagementInformationSystem),典型的有进出库管理系统
5、、日记账(台账)系统、学生信息查询系统等。畲现维说,笔者并不建议使用VBA开发专业、复杂的M1S,因为VBA作为一门*本匍I,更透合解决日常作业中的效率问JS,特别是对于ERP(企业资源规划)等企业值总平台未能II1t到的末功能J比如批量修改工作簿格式等需求,编写VBA程序可谓.又快又戊若想开发一个完、专业的大蟹M1S,程序复杂度将随代码规模呈级数上升。这时开发者就会希望自己使用融!程工具能够提供足够的严谨性,否则无法控制软件复杂性所带来的冲突和风险。而VBA语言对数据类型的宽容,对面向对象的不完全支持,以及因为寄生于Of1kC软件之中而导致的独立性缺陷,部难以满足风险控制的要求。因此对于这类
6、系统,开发者最好选择Java、Nct等更为专业的商业软件开发工具。事实上,如果读者已经具备使用VHArVIS的能力,那么完全可以自学JaV1和.Net等语0此外,玄决空里要写商业级的On1CC插件,也可以学习微软公司的VSTo(ViMiaISmdK)TOOk1briccI和Add1ns技术,或者使用Python等将OnkC文件融入大数据等领域的应用中。另外,蜜如读者只是想把自己日常办公的主要流程整合在一起,或者说把多个用于不同任务的VBA小程序汇集为一个软件,通过菜单等方式统一调用,那么使用VBA还是没有任何问逸的C1不过正所谓.麻雀虽小,五脏俱全”,虽然小型MIS的功能要求和复杂性比不上商业
7、软件,但同样必须遵循管理信息系统的方法论,而不是像设计一个VBA宏那样简单随意。具体采说,察要开发者特别注意以下问题。1 .细致分析需求每个小空MIS都需要实现多种功能,比如简单的日记账系统也要包括初始化账册”添加分录编制抵消分录.保存账册查询分录”“导出数据”等功能,其实现过程相当于编写多个VBA宏。而所有这些功能都会相百调用,并月基于同一个工作簿和数据集、所以一旦有任何修改(比如修改了账册工作表的格式),很多关联程序都需要进行调整。可以想见如果在这个系统几乎开发完毕时才发现需要调控其功能需求,那么所要改动甚至费新编写的代码将非常之多。换句话说,越到软件开发后期,需求变动的成本就越高,这也是
8、软件工槿领的想之一。所以对于M、;,开发者应该在开始Imi之前尽可能想清楚每个环节的具体需求,并且至少要细化到斑项数据字段的类型与用途、斑种查询的可能筛选条件,甚至卷个表格的格式等。2 .合理规划数据表在标准的M1S开发流程中,定义数据字典和数据库结构是非常重要的基砒T作,也是高度体现设/者对该系绫的理解深度与驾驭能力的地方。笔者在课堂上经常讲到:数据库是企史信息系统的灵魂。如果不考虑界面友好、使用难度及访问权限控制等问题,那么企业完全不襄要开发任何软件,只要所有员工都能在统一的数据库中读写数据,就足以开展各种业务活动。不过设计个合理的数据库并不简单。如果读者曾经学习过数弼库原理之类的课程,可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深入浅出Excel VBA完整版2 深入浅出 Excel VBA 完整版