学习Excel技术,关注微信公众号:
excelperfect
根据需要解决的问题,可以使用不同的Excel应用程序结构来提供解决方案。
需要考虑的因素
在设计Excel应用程序时,需要综合考虑的因素,如下图1所示。
图1
Excel应用程序结构
下面是5种Excel应用程序结构:
无编码的应用程序
自动化工作簿
通用加载宏
特定程序中的加载宏
独立式应用程序
1.无编码的应用程序
无编码的应用程序直接使用Excel的各种内置功能,这也是我们大多数人常做的。
特点:
数据的输入、分析和展示功能均放在同一个工作表中。
缺点:
(1)随着工作表设置增多,工作表会变得非常复杂且难于理解。
(2)难以使用,可修改性差。
(3)健壮性和安全性差。
(4)完全由用户来完成各种操作并保证操作的正确性,只能使用条件格式、数据有效性等内置功能来提供少量的帮助。
适用情况:
(1)仅需要一个工作簿文件,且各项操作均在该工作簿中直接完成。
(2)每个工作簿文件一次性使用,无需更新。
(3)工作簿文件由不懂VBA的用户自行维护或者不需要维护。
(4)用户已经过培训,知道如何正确地使用工作簿以及因疏忽可能引起的错误。
应用示例:
简单的调查或数据收集表
2.自动化工作簿
自动化工作簿中嵌入了VBA代码,这也是初学VBA的开发者所使用的第一种应用程序形式。
特点:
在Excel的VBA开发环境中编写增强工作簿功能的程序代码。不仅可以使用Excel内置的各种函数,而且能够针对Excel中存在的不足,编写VBA代码实现相应的功能。
缺点:
在升级程序代码时难以做到不影响工作表中已存在的数据。
适用情况:
(1)需要编写VBA代码为工作簿提供一些特殊的功能。
(2)仅需要一个工作簿且所有操作均直接在工作簿中进行。
(3)工作簿文件仅短期使用,或者分发后不需要再升级程序。
(4)工作簿中的数据在程序升级过程中不需要保留。
应用示例:
从外部数据源获取数据的工作簿或者将输入的数据保存到外部数据库。
3.通用加载宏
通用加载宏是一类特殊程序,常用于为Excel添加可选的命令和功能。
特点:
加载宏中的工作表对使用者来说不可见,因此用户不会与其直接交互。
适用情况:
设计可供其他所有工作簿文件使用的公共函数。
在菜单、工具栏、功能区中添加新项,关联组合键、捕捉Excel事件,用来为Excel增强或提供特定的功能。
通用加载宏结构:
在Auto_Open或Workbook_Open事件中编写代码,添加调用加载宏的菜单项。
每个菜单项分配实现相应功能的VBA程序。
编写的公共函数代码供工作表公式使用。
在Auto_Close或Workbook_Close事件中编写代码,清除与加载宏相关的菜单项。
4.特定程序中的加载宏
特定程序中的加载宏与普通加载宏相似,但只是在特定工作簿文件打开时才创建与加载宏相关联的菜单项。
特点:
典型特定程序的加载宏结构是,至少使用两个工作簿文件,一个是含有全部程序代码的加载宏工作簿,一个是用于数据输入的模板工作簿。在模板工作簿中存储有能被加载宏识别的标志,一般是一些隐藏的事先定义好的名称或者用户自定义的文档属性。
特定程序加载宏的结构:
使用类模块捕获应用程序级的事件。
在Auto_Open或Workbook_Open事件中编写代码,添加调用加载宏的菜单项。但初始时所有菜单项均不可用或为隐藏状态,通过创建一个类模块实例来对应用程序中的事件映身进行初始化。
每个菜单项分配实现相应功能的VBA程序。
在类模块中编写代码,映射WorkbookActivate事件,检查新工作簿是否适用于该加载宏,如果是,则菜单项可用。
在类模块中编写代码,映射WorkbookDeactivate事件,若没有活动的应用程序工作簿可用,则菜单项不可用。
在Auto_Close或Workbook_Close事件中编写代码,清除与加载宏相关的菜单项。
5.独立式应用程序
独立式应用程序隐藏了Excel环境,拥有完全独立于Excel的用户界面,用户甚至可能不知道自已仍然处于Excel程序中。
特点:
能够方便地调用Excel提供的各种功能,具有更高的开发起点。其用户界面形式多样,可以是数据录入表的样式,也可以是各种自定义的用户窗体。可以开发出专业级别的应用程序。
为了在外观和操作上与独立的Windows应用程序一致,需要进行一些设置:
保留启动前的操作,在关闭前恢复。
隐藏Excel所有的内置菜单或功能区选项卡,启用应用程序自已的命令栏。
禁用Excel工具栏中的自定义对话框。
禁用Excel提供的所有快捷键,有选择地向用户提供一些快捷键。
在每个程序的开始处,设置Application.EnableCancelKey为xlDisabled,防止用户中止程序。
在使用数据表作为用户输入界面时,应禁止用户复制或粘贴全部单元格。
独立式应用程序的结构:
一个预先加载的程序,执行Excel版本和独立性检查,以及确保应用程序能成功运行的其他有效性验证。
内核程序集,用于实现:程序环境设置和配置;创建和去除应用程序命令栏、菜单栏或功能区;处理工作表内的复制粘贴;提供常用的辅助程序库和类库;利用插件技术使用各种类模块。
若使用用户窗体界面,则准备一个隐藏的背景工作表。
许多独立的插件程序,为应用程序提供各种各样的功能。
许多供插件程序使用的工作表模板。
可以是单工作簿文件,也可以是多工作簿文件。