Access 编程简介

创建新的数据库时,通常从创建几个数据库对象开始,例如表、窗体和报表。最后,还需进行编程,以自动执行某些过程并将数据库对象绑定在一起。本文可帮助你了解 Access 中的编程工具。

本文内容

什么是编程?

我应该使用宏还是 VBA 代码?

使用命令按钮向导执行常见的编程任务​​

了解宏

了解 VBA 代码

将宏转换为 VBA 代码

什么是编程?

在 Access 中,编程是指使用 Access 宏或 Visual Basic for Applications (VBA) 代码将功能添加到数据库的过程。例如,假设已创建窗体和报表,需要将命令按钮添加到窗体中,单击该按钮可打开报表。在这种情况下,编程是指以下过程:创建宏或 VBA 过程,设置命令按钮的 OnClick 事件属性,以便单击命令按钮来运行宏或过程。对于简单操作(如打开报表),可以使用命令按钮向导执行所有操作,也可关闭向导,自己编程。

注意: 许多 Microsoft Office 程序使用术语“宏”来表示 VBA 代码。这可能会让 Access 用户感到困惑,因为在 Access 中,术语“宏”是指可使用宏生成器汇编的宏操作命名集合。Access 宏操作仅表示 VBA 中可用的部分命令。与 Visual Basic 编辑器相比,宏生成器能够提供更加结构化的界面,用户无需学习 VBA 代码就可将编程添加到控件和对象中。需要注意的是,在 Access 帮助文章中,Access 宏被称为宏。相反,VBA 代码被称为 VBA、代码、函数或过程。VBA 代码包含在类模块(属于单个窗体或报表的一部分,通常包含仅用于这些对象的代码)和模块(没有绑定到特定对象,通常包含可在整个数据库中使用的“全局”代码)中。

对象(如窗体和报表)和控件(如命令按钮和文本框)具有各种事件属性,可在其中附加宏或过程。每个事件属性都与特定的事件相关联,例如单击鼠标、打开窗体或修改文本框中的数据。事件也可由 Access 之外的因素(例如系统事件)或者附加到其他事件的宏或过程触发。如果将许多宏或过程添加到多个对象的多个事件属性中,数据库可能会变得十分复杂,但在大多数情况下,只需使用极少的编程即可获得所需结果。

返回页首

我应该使用宏还是 VBA 代码?

决定使用宏、VBA,或者两者均使用,主要取决于你计划如何部署或分发数据库。例如,如果数据库存储在你的计算机上,并且你是唯一的用户;如果你喜欢使用 VBA 代码,则可能会用 VBA 执行大部分编程任务。但是,如果想要将数据库放置到文件服务器上以便与其他人共享,出于安全考虑,可能需要避免使用 VBA。

应根据以下两个因素来决定使用宏还是 VBA 代码:安全性和所需的功能。安全性是一个考虑因素,因为 VBA 可以用来创建代码,这些代码可能会危害数据安全性或损害计算机上的文件。使用其他人创建的数据库时,仅当你知道数据库具有可信来源后,才启用 VBA 代码。当创建供其他人使用的数据库时,应尽量避免包含需要用户专门向数据库授予信任状态的编程工具。本节后面部分中会介绍免除用户信任数据库的必要性的通用技术。

为帮助确保数据库的安全性,应尽量使用宏(当你能够使用宏时),并仅将 VBA 编程用于无法使用宏操作执行的操作。此外,应尽量只使用无需向数据库授予信任状态以便运行的宏操作。以这种方式限制宏操作的使用,可以让用户确信数据库没有任何可能损害其计算机数据或其他文件的编程。

宏​​的注意事项

从 Access 2010 版开始,Access 包含许多新的宏操作,用户构建的宏比使用早期版本的 Access 构建的宏更强大。例如,现在可以通过宏操作来创建并使用全局临时变量,并且可以通过新的错误处理宏操作更轻松地处理错误。在 Access 的早期版本中,只有通过 VBA 才能使用这些功能。此外,可以将宏直接嵌入到对象或控件的事件属性中。嵌入的宏将成为对象或控件的一部分,如果移动或复制,也与对象或控件绑定在一起。

宏可提供处理许多编程任务的简便方法,例如打开和关闭窗体以及运行报表。可以快捷地将创建的数据库对象(窗体、报表等)绑定在一起,因为只需记住极少的语法。每个操作的参数均显示在宏生成器中。

宏可提高安全性和易用性,除此之外,还必须使用宏来执行以下任务:

  • 为键分配一个操作或一组操作。这需要创建一个名为 AutoKeys 的宏组。

  • 在数据库首次打开时,执行一个操作或一系列操作。这需要创建一个名为 AutoExec 的宏。

    注意:  AutoExec 宏可在任何其他宏或 VBA 代码之前运行,即使已在“Access 选项”对话框中指定了启动窗体,并已将宏或 VBA 代码附加到该窗体的 OnOpenOnLoad 事件中,也是如此。

有关如何构建宏的详细信息,请参阅了解宏部分。

VBA 的注意事项

如果要执行以下任何操作,应使用 VBA 编程而不是宏:

  • 使用内置函数或创建自己的函数    Access 中包含许多内置函数,例如可以计算利息支付的 IPmt 函数。可使用这些内置函数来执行计算,而无需创建复杂的表达式。通过使用 VBA 代码,还可创建自己的函数,用于执行超出表达式功能的计算或替代复杂的表达式。此外,可以使用表达式中创建的函数,将常见操作应用于多个对象。

  • 创建或处理对象   在大多数情况下,你会发现在对象的设计视图中创建和修改对象最为简便。但在某些情况下,你可能需要在代码中处理对象的定义。通过使用 VBA,不仅可以处理数据库,还可以处理数据库中的所有对象。

  • 执行系统级别操作   可以在宏中执行 RunApp 操作,以便从 Access 中运行另一个程序(例如 Microsoft Excel),但不能在 Access 外使用宏进行太多其他操作。通过使用 VBA,可检查计算机上是否存在文件,使用自动化或动态数据交换 (DDE) 与其他基于 Microsoft Windows 的程序(如 Excel)进行通信,以及在 Windows 动态链接库 (DLL) 中调用函数。

  • 一次处理一条记录   可使用 VBA 逐条处理一组记录(一次一条记录),并对每条记录执行一个操作。与此相反,宏一次能处理整组记录。

返回页首

使用命令按钮向导执行常见的编程任务​​

如果要向窗体添加命令按钮,命令按钮向导可帮助你开始编程。该向导可帮助你创建执行某项特定任务的命令按钮。在 Access (.accdb) 文件中,该向导会创建嵌入在命令按钮的 OnClick 属性中的宏。在 .mdb 或 .adp 文件中,该向导会创建 VBA 代码,因为嵌入的宏在这些文件格式中不可用。无论哪种情况,都可根据需要对宏或 VBA 代码进行修改或增强。

  1. 在导航窗格中,右键单击要向其添加命令按钮的窗体,然后单击“设计视图”。

  2. 在“设计”选项卡上,单击下箭头以显示“控件”库,并确保已选中“使用控件向导”。

  3. 在“设计”选项卡上的“控件”库中,单击“按钮”。

  4. 在窗体设计网格中,单击要放置命令按钮的位置。

    随即启动命令按钮向导。

  5. 在向导的第一页上,单击“类别”列表中的每个类别,查看可以通过向导编程命令按钮执行的操作。在“操作”列表中,选择所需操作,然后单击“下一步”。

  6. 单击“文本”选项或“图片”选项,具体取决于要在命令按钮上显示文本还是图片。

    • 如果要显示文本,请在“文本”选项旁的框中编辑文本。

    • 如果要显示图片,该向导会推荐列表中的一个图片。如果要选择其他图片,选中“显示所有图片”复选框可显示 Access 提供的所有命令按钮图片的列表,或单击“浏览”可选择存储在其他位置的图片。

      单击“下一步”。

  7. 为命令按钮输入有实际意义的名称。此步骤为可选项,该名称不会显示在命令按钮上。但是,建议输入一个有实际意义的名称,以便稍后(例如,如果要为窗体上的控件设置 Tab 键次序)引用命令按钮时,可以轻松地区分不同的命令按钮。例如,如果该命令按钮用于关闭窗体,可以将其命名为 cmdClose 或 CommandClose。

  8. 单击“完成”。

    Access 会将该命令按钮置于窗体上。

  9. 若要查看向导进行了哪些“编程”,请执行以下可选步骤:

    1. 如果尚未显示属性表,请按 F4 显示该表。

    2. 在属性表中,单击“事件”选项卡。

    3. 在“On Click”属性框中,单击“生成”按钮 按钮图像

      Access 将启动宏生成器并显示向导创建的宏。如果需要,可以对宏进行编辑(有关如何编辑宏的详细信息,请参阅了解宏部分)。完成后,在“设计”选项卡上的“关闭”组中,单击“关闭”即可关闭宏生成器。如果 Access 提示保存更改并更新属性,单击“”保存更改,或“”拒绝更改。

  10. 在“设计”选项卡上的“视图”组中,单击“视图”,然后单击“窗体视图”。单击新的命令按钮,确认其是否按预期的方式工作。

返回页首

了解宏

宏是一种可用于自动执行任务及向窗体、报表和控件添加功能的工具。例如,如果向窗体添加命令按钮,会将该按钮的 OnClick 事件属性与宏关联,该宏包含你希望每次单击按钮时执行的命令。

将 Access 宏视为一种简化的编程语言会很有帮助,借助宏,可通过构建要执行的操作列表来创建代码。构建宏时,可以从下拉列表选择每个操作,然后填写每个操作所需的信息。借助宏,可将功能添加到窗体、报表和控件中,而无需在 VBA 模块中编写代码。宏可提供 VBA 中可用的部分命令,大多数用户认为构建宏比编写 VBA 代码更容易。

通过使用宏生成器来创建宏,如下图所示。

Access 2010 宏生成器

注意: 请注意,Access 2007 中的宏生成器与上图不同。在 Access 2007 中,宏生成器是一系列行和列,其中列出了宏的各种操作。

显示宏​​生成器​​:

  • 在“创建”选项卡上的“宏和代码”组中,单击“”。

返回页首

了解 VBA 代码

与宏一样,VBA 也可向 Access 应用程序添加自动化和其他功能。可通过使用第三方控件扩展 VBA,并根据自己的特定需要编写函数和过程。

开始 VBA 编程的一种快速方法是首先构建一个 Access 宏,然后将其转换为 VBA 代码。有关此操作的说明,请参阅将宏转换为 VBA 代码部分。此功能将创建一个新的 VBA 模块,该模块可在宏中执行等效操作。它还可打开 Visual Basic 编辑器,以便用户修改过程。在 Visual Basic 编辑器中工作时,可以单击关键字并按 F1,启动“Access 开发人员帮助”,了解有关每个关键字的详细信息。然后可浏览“Access 开发人员帮助”,查找可帮助你执行所需编程任务的新命令。

返回页首

将宏转换为 VBA 代码

可使用 Access 将宏自动转换为 VBA 模块或类模块。可转换附加到窗体或报表中的宏,无论它们的存在方式是单独的对象还是嵌入的宏,都是如此。也可转换未附加到特定窗体或报表中的全局宏。

注意: 可将 Visual Basic for Applications (VBA) 代码添加到 Web 数据库中;但是,当数据库在 Web 浏览器中运行时,无法运行该代码。如果 Web 数据库包含 VBA 代码,必须先使用 Access 打开 Web 数据库,然后才能运行代码。若要在 Web 数据库中执行编程任务,请改用 Access 宏。

转换附加到窗体或报表中的宏

此过程将窗体或报表(或其任何控件)引用(或嵌入)的任何宏转换为 VBA,并将 VBA 代码添加到窗体或报表的类模块中。类模块会成为窗体或报表的一部分,并随窗体或报表一起移动或复制。

  1. 在导航窗格中,右键单击窗体或报表,然后单击“设计视图”。

  2. 在“设计”选项卡上的“工具”组中,单击“将窗体的宏转换为 Visual Basic 代码”或“将报表的宏转换为 Visual Basic 代码”。

  3. 在“转换窗体宏”或“转换报表宏”对话框中,选择是否需要 Access 为其生成的函数添加错误处理代码。此外,如果宏内有任何注释,请选择是否希望将其添加到函数中。单击“转换​​”以继续。

    如果窗体或报表不存在类模块,Access 将创建一个类模块,并为与窗体或报表关联的每个宏的模块添加一个过程。Access 还会更改窗体或报表的事件属性,以运行新的 VBA 过程而不是宏。

  4. 查看并编辑 VBA 代码:

    1. 当窗体或报表在设计视图中仍处于打开状态时,如果尚未显示属性表,按 F4 可显示。

    2. 在属性表的“事件”选项卡上,单击任何显示 [事件过程] 的属性框,然后单击“生成”按钮 按钮图像 。若要查看特定控件的事件属性,单击控件将其选中。若要查看整个窗体或报表的事件属性,从属性表顶部的下拉列表中选择“窗体”或“报表”。

      此时,Access 将打开 Visual Basic 编辑器并在其类模块中显示事件过程。可以向上或向下滚动,查看同一个类模块中的任何其他过程。

转换全局宏

  1. 在导航窗格中,右键单击要转换的宏,然后单击“设计视图”。

  2. 在“设计”选项卡上的“工具”组中,单击“将宏转换为 Visual Basic 代码”。

  3. 在“转换宏”对话框中,选择所需选项,然后单击“转换”。

    此时,Access 将转换宏并打开 Visual Basic 编辑器。

  4. 查看并编辑 VBA 代码:

    1. 在 Visual Basic 编辑器中,如果未显示项目资源管理器窗格,可在“视图”菜单上,单击“项目资源管理器”。

    2. 展开你正在处理的数据库名称下的树。

    3. 在“模块”下,双击模块“被转换的宏”宏名。

      此时,Visual Basic 编辑器将打开模块。

将 VBA 函数附加到事件属性

将全局宏转换为 VBA 时,VBA 代码放置于标准模块中。与类模块不同,标准模块不是窗体或报表的一部分。你可能希望将函数与窗体、报表或控件的事件属性相关联,以便代码能够准确地在你所需的时间和位置运行。为此,可将 VBA 代码复制到类模块中,然后将其与事件属性相关联,也可使用以下过程执行从事件属性到标准模块的特殊调用。

  1. 在 Visual Basic 编辑器中,记录函数名称。例如,如果转换了一个名为 MyMacro 的宏,函数名称将为 MyMacro()。

  2. 关闭 Visual Basic 编辑器

  3. 在导航窗格中,右键单击要关联该函数的窗体或报表,然后单击“设计视图”。

  4. 单击要关联函数的控件或节。

  5. 如果尚未显示属性表,请按 F4 显示该表。

  6. 在属性表的“事件”选项卡上,单击要关联函数的事件属性框。

  7. 在属性框中,键入一个等号 (=),后跟函数的名称,例如,=MyMacro()。请务必包含括号。

  8. 通过单击快速访问工具栏上的“保存”来保存窗体或报表。

  9. 在导航窗格中,双击窗体或报表,然后测试代码是否按预期的方式运行。

现在你已了解将 VBA 代码添加到数据库中的基本步骤。本文仅介绍入门基础知识,除此之外,还有许多优秀的参考书籍和在线资源可帮助你提高编程技能。

返回页首

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×