几种应用程序结构,下面从无代码应用程序开始。 1 无代码应用程序 无代码应用程序事实上可以认为是任何使用的简单的Excel应用,它们的共同特点就是完全依赖Excel提供数据验证、单元格的格式化、数据计算、数据输出等功能,也就是Excel提供给我什么我就用什么,当用Excel建立了一个简单的输入与计算的xls文件的时候,你已经在不知不觉中在使用这种应用程序了。 无代码应用程序的优点是简单。但是它存在很多显而易见的缺点。首先你对很多对象都没有绝对的控制,而且数据验证、工作表函数都集成在工作表中,这部分的代码的管理就变得非常困难。对于今后的更新而言,替换工作表同时也会不可避免地丢失数据,而且这种应用程序结构不符合代码与数据分离的原则。这样的应用程序只适用于比较简单的需求。 无代码应用程序适用于下列情况: ·该应用程序的生命周期很短,只在单机进行部署,而且不需要升级。 ·最终用户在维护该代码的时候不需要了解VBA。 ·最终用户的数量不能太多。 2、 自动化工作表 所谓自动化工作表,其意义仅为运行自动化过程的代码储存在工作簿内。这也是占比例最多的Excel应用程序。你可能会问这种应用程序为什么还要拿出来说明,其原因是,在后面提及的应用程序类型都是没有将程序代码存放在工作簿内的应用程序类型。为了理解后面提到的几种应用程序,应该重新审视一下平常开发的VBA应用程序的优点和缺点以及它的最佳用途。 相对于第一种应用程序结构,现在可以最大限度地发挥VBA代码的威力:可以将代码和数据进行分离,可以捕获Workbook和Worksheet事件,实现需要的功能,不一而足。 然而问题还是出在程序更新的时候,会遇到与前面相同的问题:在更新程序的时候不可避免会丢失数据。惟一可靠的可以保存数据的方式就是,将原来的数据复制一份,当工作簿更新完成之后,再把数据复制到新的工作簿,自动化工作表示用于下面几情况: 工作簿内包含针对此工作簿的特殊函数, 工作簿程序更新时数据不需要被保留, 3、加载宏 加载宏是一种特殊的应用程序,通常用来给Excel增加功能。这里面要特别指出的是,通过加载宏给Excel增加功能特指与应用程序无关的一般目的功能,例如,增加一个计算房屋贷款月还款额的函数。可以为Excel增加一个在加载宏中的工作簿,对用户而言它是不可见的,但是用户可以通过"宏"对话框来访问这些加载宏。 这些工作簿尽管对于用户不可见,而且其中包含的宏也无法在“宏”中可见,但是它们都可以通过VBA代码进行访问。如果希望这些工作簿成为普通的工作簿也很简单,只需更改工作簿的IsAddin属性就可以了。 因为加载宏中的工作表对用户始终不可见,所以需要使用用户表单来和用户进行交互。通过使用用户表单,我们首先获得了更高级的用户界面控制,其次可以更好地实现用户数据验证以及实现更高级的错误处理。这样就可以进一步增强应用程序的可靠性和数据完整性。使用加载宏结构,可以通过使用注册表或者是ini文件来记录用户的设置,而不需要像以前一样记录在工作表中。实现这种分离的重要作用就在于现在可以将配置、数据与程序代码分离,当在更新任何一方的时候都不会影响到其他部分。 加载宏是通过xla文件实现的,当在更新加载宏的时候,只需更改xla文件,然后进行覆盖操作就可以了,通过这种方式可以确保在更新程序时用户数据不会丢失。 加载宏通常具备下面的结构: 在Auto-Open(在应用程序启动时调用此事件)和Workbook_Open(在工作簿打开时调用此事件)中设置菜单项以及键盘快捷方式。然后将菜单项的OnAction属性设置为调用相应的过程。 ·对于每个菜单项对应的过程放置在不同的模块中。 .在Auto-Close(在应用程序关闭时调用此事件)和Workbook-Close(在工作簿关闭时调用此事件)中移除菜单项,并释放键盘调用方式。 事实上,加载宏的世界不只如此,在实际工程中,还有用C API编写的XLL加载宏,或是由VB或VB6编写的COM加载宏 4 企业信息系统 企业信息系统,这个名称事实上并不准确,也并非是微软专门提供的一种VBA应用程序结构,但是这种应用程序和其他几种Excel VBA应用程序结构有着非常大的区别,那就是通过使用企业信息系统结构,用户甚至不知道他正在使用Excel编写应用程序,因为企业信息系统完全替代了Excel的用户界面,取而代之设计者设计的界面。这和用Visual Basic等高级编程语言设计出的应用程序没有什么不同。 企业信息系统听起来有玄奥,事实上它是通过大量的基础代码来实现的。通过配置Excel、设计单独的用户界面,并配合使用前面提到一些技术,就得到了企业信息系统 不可否认,企业信息系统对Excel的控制是前面几种应用程序所无法达到的,所以企业信息系统需要相对丰富的VBA知识。 企业信息系统的用途也十分广泛。通过设计企业信息系统不仅可以最大限度地控制用户对数据和程序的访问,而且可以利用各种Excel的内置功能,如公式、函数、图表、数据验证等。因为企业信息系统十分强大,而且结构相当灵活,所以在设计企业信息系统的时候应当考虑周全。 并非任何Excel应用程序都可以被设计为企业信息系统,企业信息系统因为同一般的Windows应用程序在外观上难辨真伪,所以我们要设置大量的Application属性,例如隐藏工具条和菜单等。因为Excel会自动记录对Excel属性设置的变化,所以记录Excel的初始设置并在应用程序关闭时恢复设置是每一个企业信息系统必须做的。概括起来,下面的步骤是Excel应用程序在设置环境的时候应该做的: ·删除所有Excel原有的工具条。 ·提供自己的工具条,但是要禁止用户访问工具条"自定义"对话框。 ·禁止Excel的快捷键设置(如Ctrl+V),并设置自己的功能快捷键 ·将Application.EnableCancelKey属性设置为xlDisabled,这样用户就无法在代码执行期间强行中断。 在调试程序阶段,我们需要一个额外的变量将程序的属性稍加改动,以区分当前处于调试模式还是用户模式。当进入调试模式时,允许开发者使用Alt+F1l进入调试模式。在调试阶段不要设置EnableCancelKey属性,否则程序代码无法中断,调试将无法进行。还可以进一步利用这个变最显示各种开发过程消息。 说了这么多,现在来归纳一下企业信息系统的结构: ·启动部分 ·记录Excel设置,并适时恢复。 ·配置并锁定Excel应用程序。 ·移除Excel工具条。 ·处理Excel的快捷键。 ·后台工作表 ·显示用户表单,或是应用程序图标。 ·多个表单模版(可用于用户输入数据,或是报告模版)。 小结,前面首先分析了Excel在实际工程中应用的价值,让我们能够全面地衡量在工程中使用Excel作为开发工具是否恰当。我们看了其他几大类的产品作为比较,可以看到,Excel在整个开发产品的光谱中,占有比较独特的地位,但是总地说Excel适合于开发单机版、访问量与开发维护量都不是很大、对数据有分析建模功能的应用程序。当然,使用Excel作为开发工具还有一个巨大的优势就在于Excel的用户群巨大,可以使应用程序的用户大大缩短学习周期。 |