您应该根据两个因素来决定使用宏还是使用 VBA 代码:安全性和所需的功能。之所以要考虑安全性,是因为 VBA 可用于创建危害数据安全或损坏计算机上的文件的代码。如果您使用的数据库是由其他人创建的,那么仅当您知道该数据库的来源可靠时才应该启用 VBA 代码。如果您创建的数据库将被其他人使用,那么您应该尽量避免包括需要用户特别准许数据库为可信状态的编程工具。避免需要用户信任您的数据库的一般技术将在本节后面的内容中讲述。
有关启用或禁用可能不安全的内容的详细信息,请参阅在 Office 文档中启用或禁用宏一文(如本文其他地方所提及的那样,大多数其他 Microsoft Office 程序使用术语“宏”来指代 VBA 代码,因此不要混淆该术语与 Access 宏)。
为了帮助确保数据库的安全,您应该尽量在能使用宏时就使用宏,且仅对使用宏操作无法完成的操作使用 VBA 编程。此外,您应该尽量只使用不需要准许数据库为可信状态就可以运行的宏操作。以这样的方式限制宏操作的使用使您的用户可以确信,数据库中不包含任何可能会损坏其计算机上的数据或其他文件的编程。
在某种程度上,为了鼓励广泛使用宏,Office Access 2007 包含许多新的宏操作,与 Access 的早期版本相比,使用这些新的宏操作可以生成功能更加强大的宏。例如,您现在可以通过使用宏操作来创建和使用全局临时变量,并且可以通过使用新的错误处理宏操作更恰当地处理错误。在 Access 的早期版本中,这些类型的功能只有使用 VBA 时才可用。此外,在 Access 2007 中,您可以直接将宏嵌入到对象或控件的事件属性中。嵌入的宏将变成该对象或控件的一部分,并随该对象或控件一起被移动或复制。在 Access 的早期版本中,宏必须作为单独对象维护,这有时会使您的数据库更难维护。
向对象或控件添加编程时,您应该考虑以这样的优先顺序来使用以下内容:
生成宏时,您可以在不需要准许数据库为可信状态即可运行的操作的短列表与所有宏操作的长列表之间进行切换,方法是在宏生成器中单击“显示所有操作”。单击“显示所有操作”还会显示 RunCommand 宏操作的完整参数列表。有关生成宏的详细信息,请参阅了解宏一节,或者访问请参阅一节中的链接。
宏提供了完成许多编程任务的简单方法,例如打开和关闭窗体以及运行报表。您可以轻松快捷地绑定您创建的数据库对象,因为几乎没有需要您记住的语法;每个操作的参数都显示在宏生成器中。
除了宏提供的增强的安全性和易用性之外,如果您想要执行下列操作,那么您必须使用宏:
注释 AutoExec 宏在任何其他宏或 VBA 代码运行之前运行,即使您在“Access 选项”对话框中指定了启动窗体并将宏或 VBA 代码附加到了该窗体的 OnOpen 或 OnLoad 事件中也是如此。
如果您要执行下列任一操作,那么应该使用 VBA 编程而不是宏:
如果您在分发给其他人的数据库中确实使用了 VBA 代码,您应该考虑将该数据库打包并进行签名,以便用户可以确信该代码来源可靠。有关对数据库进行打包和签名的详细信息,请参阅保护 Access 2007 数据库一文。