撰稿人:吴木城 审稿人:廖小安
接触电脑的人多少都听过Windows、Linux等操作系统编程,介绍系统编程的书籍也很多,如VC++、VB、VFP、JAVA等等。而讨论应用程序编程的书籍相对少得多,因而一般人可能没听说MS Office办公软件也能编程。应用程序编程究竟是怎么回事,何时需要编程,现在我给大家简单介绍一下,分享一点心得。
多年前,我在安装office应用程序时就注意到在自定义安装有一个选项vba。试安装后,发现应用程序“工具”菜单下拉“宏”选项下二级选项多了一项Visual Basic编辑器。试运行一下,发现了一个类似windows编程集成开发环境VB的界面,觉得十分惊讶。在被界面震撼的同时猜测:难道office应用程序类似windows平台也可开发自己的“应用程序”?应用程序不就是靠菜单功能解决问题,编写程序有这个必要吗?何时需要?怎样编写?等等问题,一直萦绕在大脑中,于是到处找关于vba的书籍。
最早接触office97版,只购买到office7.0版指导书,根本没这方面的内容。直到接触office2000版,安装了vba,十几年前从朋友借到一套原版office2000指南,才对vba编程有所了解,后来陆续读了多本关于这方面的书籍,才较深入了解office编程。
一般来说,一个软件开发出来了,开发者会定义一些常用功能供用户使用,但为了解决特定问题,如果功能不够用,便无能为力。要不选择更多功能的软件(若存在,是否免费暂不说),要不自己定做一个(若不存在,自己有没开发能力暂不说),不然只能等软件公司升级版本(公司是否存在或愿意暂不说)。开放的操作系统提供了扩展系统功能的方法,这是系统编程;应用软件一般不提供扩展功能方法,若不能靠上述方法解决,别无他法。但office与众不同,自97版本后提供了类似系统编程的方法。这就是在应用程序中嵌入自动化处理,让用户有自己解决问题的方案。可能有人说:既然都要编程,不如重写一个好了。这里存在一个难易和成本问题。重写一个太难了,成本太高,我们做不到,但在office应用程序里编写就相对容易多了。
在应用Office过程中,会遇到一般常规功能无法解决的吗?这个问题的回答是肯定的。如果你说没遇到,那可能是应用不够深入,未遇到复杂情况。但是否一定要通过编程来解决遇到的问题,那倒又不一定,不厌其烦一步步操作也是可能的。应用office解决实际问题,一般可用常规方法,但office还给高级用户提供了编程解决方案,这就是用vba编写自动化处理。对一个小问题,直接用常规方法解决,对一个复杂问题最好用编程方法解决。打个比方,能用普通菜刀杀鸡的决不用牛刀,不然大材小用,杀牛的最好还是用牛刀,不然效率不高,各有各使用场合。
Vba全称visual basic for application,就是visual basic的应用程序版本,vb的功能子集。不同的应用程序,其vba大同小异。相同的都具备vb的一般语言特征,不同是针对不同的应用,拥有不同的对象库。因此学习vba应用程序编写,还要视具体哪个应用程序。比如Word、Excel、Access就各不相同。
Word应用程序定位于字处理,兼简单的表格处理。一般来说用word处理文本和一般表格,处理不需要复杂计算,但对格式要求较高的场合。Excel用来处理电子表格和简单的数据库。一般来说不用Excel处理文本,但可用来处理复杂计算的表格,对简单的数据库进行处理。对一般数据库必须用Access甚至用Ms SQL等大型数据库解决。
在Word中需要编程的机会应该是很少的,除非你刻意要通过vba来处理一个文本或简单表格。实际工作中用Word提供的常规功能就足以应付日常工作了。但涉及多文档重复处理或者作为其他应用程序的辅助输出,也许确实需要编程。其中宏录制功能,让我们通过它学习vba编程。文档对象的定义建立处理十分重要,围绕它实现应用程序自动化处理。
在Excel中是否需要编程,取决于你自己的选择。你觉得通过常规方法一步一步操作,不觉得繁琐的话,也许永远用不到vba的编程。但如果一个问题相当复杂,一步一步操作效率低下,也许用vba编写加载宏是很好的想法。但要注意模块的可重用性,假若运行一次模块便弃用,那获益就比较低。你甚至可以将Excel当成一个开发平台来用,编制出界面“友好”、功能“强大”的应用程序。这方面已经有不少书籍介绍范例。Excel的简单数据库功能应是VBA大显身手的地方,设计一个合理的数据库结构是十分重要的,会影响到编写模块的算法。相较于Aceess等专门数据库管理系统,Excel的数据库功能是很弱的,至少没法解决数据冗余的问题。因此对于大的数据量,选择它并不适合。
Access是作为专门的小型数据库管理系统来设计的,它的数据管理功能是比较强的。相较于传统的Foxpro数据库,Access开放包容,更能够跟微软的其他开发平台配合使用,现在已少人使用Foxpro了。Access可当作一般应用程序使用,不厌其烦地一步步操作数据。相较于Excel,Access存储数据量大得多,因此也很少人直接操作数据,一般都是通过编程解决数据处理问题。
作为数据库语言,Access嵌入Jet-SQL,可以完成数据定义、处理、查询、控制等功能。数据访问对象DAO或ADO调用完成数据的访问处理功能,用DAO还是用ADO不同版本Access侧重不同。不同于vb数据库管理功能,Access一打开数据库文件,即存在一个当前数据连接。如Access数据库结构设计遵循规则,能使数据冗余得到有效控制,同时有SQL语言可供调用,处理功能较强,并有专门窗体、报表功能,使界面友好易用。最后通过编写VBA模块或宏(功能弱,一般少用)集成各界面模块,成为专门的信息管理软件。唯一不足的是,Access毕竟是办公软件,用它制作的软件并不能独立于Access环境运行,因此分发稍微麻烦些。
除以上三个常用的办公软件外,office套件还包括powerpoint、outlook、frontpage等等,较少涉及数据处理,这里不再介绍。
如果用office系列软件无法解决你遇到的问题,那只能跳出office, 上升到Windows平台,用VB或VC++等开发环境进行系统应用程序编程。这是更高级的专题了。
地址:广东省广州市从化温泉镇温泉东路130号 联系电话:020-87838567(总机) 传真:020-87838223
版权所有:广东省老干部事务中心 主备案号粤ICP备11002148号 技术支持:永拓科技