Access 编程简介

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

创建新数据库时,通常首先创建表、窗体和报表等数据库对象。 在某些时候,可能需要添加编程以自动执行流程并连接这些对象。 本文介绍 Access 中的编程工具。

本文内容

什么是编程?

在 Access 中,编程是指使用 Access 宏或Visual Basic for Applications () VBA 代码向数据库添加功能。 例如,可以创建窗体和报表,然后将命令按钮添加到窗体,以便在选择报表时打开报表。 在这种情况下,创建宏或 VBA 过程,然后设置命令按钮 OnClick 的事件属性,以便命令按钮运行宏或过程。 对于简单的操作(例如打开报表),可以使用命令按钮向导完成工作,也可以关闭向导并自行对其进行编程。

注意

许多Microsoft Office 程序使用术语“宏”来 VBA 引用代码。 这会使 Access 用户感到困惑,因为在 Access 中,术语“宏”是指使用宏生成器组合的宏操作的命名集合。 访问宏操作仅表示 中 VBA可用的命令的子集。 宏生成器提供了比 Visual Basic 编辑器更结构化的界面,因此你可以向控件和对象添加编程,而无需学习 VBA 代码。 在 Access 帮助文章中,Access 宏称为宏。 VBA 代码称为 VBA 代码、函数或过程。 VBA 代码存储在类模块中,这些模块是单个窗体或报表的一部分,通常仅包含这些对象的代码,并且存储在模块中,这些模块不绑定到特定对象,并且通常包含可在整个数据库中使用的全局代码。

窗体和报表等对象以及命令按钮和文本框等控件具有可以将宏或过程附加到的事件属性。 每个事件属性都与特定事件相关联,例如单击鼠标、打开窗体或更改文本框中的数据。 事件也可以由 Access 外部的因素(例如系统事件)触发,也可以由附加到其他事件的宏或过程触发。 如果将多个宏或过程添加到多个对象的多个事件属性,则数据库可能会变得复杂。 不过,在大多数情况下,可以通过很少的编程来获取所需的结果。

返回页首

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

决定使用宏或 VBA两者,主要取决于计划如何部署或分发数据库。 例如,如果数据库存储在你的计算机上,则你是唯一的用户,并且你习惯使用 VBA 代码,你可能会决定将 它 VBA 用于大多数编程任务。 但是,如果计划与文件服务器中的其他人共享数据库,出于安全考虑,你可能希望避免使用 VBA

使用宏或 VBA 代码的决定基于以下两个考虑因素:安全性和所需的功能。 安全性很重要,因为 VBA 可用于创建泄露数据或损坏计算机上的文件的代码。 使用其他人创建的数据库时,仅当知道数据库来自可信源时,才启用 VBA 代码。 创建其他人将使用的数据库时,请尝试避免包含要求用户显式信任数据库的编程工具。 本部分稍后将介绍用于避免该要求的一般技术。

若要帮助保护数据库,请尝试在可以且仅用于 VBA 无法使用宏操作执行的操作时使用宏。 此外,尝试仅使用不需要信任数据库的宏操作才能运行。 以这种方式限制宏操作可帮助用户确信数据库没有可能损害其计算机上的数据或其他文件的编程。

宏​​的注意事项

Access 包含许多宏操作,可生成比早期版本的 Access 所允许的更强大的宏。 例如,现在可以通过宏操作来创建并使用全局临时变量,并且可以通过新的错误处理宏操作更轻松地处理错误。 在早期版本的 Access 中,这些功能仅在 中 VBA可用。 还可以将宏直接嵌入对象或控件的事件属性中。 如果移动或复制对象或控件,嵌入宏将成为对象或控件的一部分,并且始终与它一起。

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

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

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

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

    注意

    AutoExec在任何其他宏或VBA代码之前运行,即使你在“访问选项”对话框中指定了启动窗体,并将宏或VBA代码附加到该窗体的 OnOpen 或 事件。OnLoad

有关如何生成宏的详细信息,请参阅 了解宏

VBA 的注意事项

如果要执行以下任一操作,请使用 VBA 而不是宏:

  • 使用内置函数或创建自己的函数。 Access 包括许多内置函数,例如 IPmt,用于计算利息支付。 可以使用这些函数来执行计算,而无需创建复杂的表达式。 通过使用 VBA,还可以创建自己的函数,以执行超出表达式功能的计算或替换复杂表达式。 此外,可以使用表达式中创建的函数,将常见操作应用于多个对象。
  • 创建或操作对象。 在大多数情况下,在对象的“设计”视图中创建和修改对象是最容易的。 不过,在某些情况下,你可能想要在代码中操作对象的定义。 通过使用 VBA,可以操作数据库中的所有对象以及数据库本身。
  • 执行系统级操作。 可以在宏中执行 RunApp 操作以从 Access 中运行另一个程序(如 Microsoft Excel),但不能使用宏在 Access 之外执行其他操作。 通过使用 VBA,可以检查计算机上是否存在文件、使用自动化或动态数据交换 (DDE) 与其他基于 Windows Microsoft 的程序(如 Excel)进行通信,并调用 Windows 动态链接库中的函数 (DLLs) 。
  • 一次操作一个记录。 可以使用 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. “单击时” 属性框中,单击“ 生成 ”按钮。

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

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

返回页首

了解宏

宏是一种工具,可用于自动执行任务并将功能添加到窗体、报表和控件。 例如,如果将命令按钮添加到窗体,则可以将按钮 OnClick 的事件属性与宏相关联,该宏包含每次选择按钮时要执行的命令。

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

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

显示宏​​生成器​​:

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

返回页首

了解 VBA 代码

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

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

返回页首

将宏转换为 VBA 代码

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

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

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

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

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

  3. “转换窗体宏 ”或“ 转换报表宏 ”对话框中,选择是否希望 Access 向其生成的函数添加错误处理代码。 如果宏包含注释,则还要选择是否希望这些注释包含在函数中。 单击“转换​​”以继续。 如果窗体或报表不存在类模块,Access 将创建一个类模块,并为与窗体或报表关联的每个宏的模块添加一个过程。 Access 还会更改窗体或报表的事件属性,以便它们运行新 VBA 过程而不是宏。

  4. 查看和编辑 VBA 代码:

    1. 当窗体或报表仍在“设计”视图中打开时,如果尚未显示属性表,请按 F4 显示它。

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

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

转换全局宏

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

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

  3. 在“转换宏”对话框中,选择所需选项,然后单击“转换”。 此时,Access 将转换宏并打开 Visual Basic 编辑器。

  4. 查看和编辑 VBA 代码:

    1. 在 Visual Basic 编辑器中,如果未显示项目资源管理器窗格,可在“视图”菜单上,单击“项目资源管理器”。
    2. 展开你正在处理的数据库名称下的树。
    3. 在“ 模块”下,双击模块 Converted Macro-<macro name> 。 此时,Visual Basic 编辑器将打开模块。

将 VBA 函数附加到事件属性

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

  1. 在 Visual Basic 编辑器中,记录函数名称。 例如,如果转换了名为 MyMacro的宏,则函数名称将为 MyMacro()
  2. 关闭 Visual Basic 编辑器
  3. 在导航窗格中,右键单击要与之关联的函数的窗体或报表,然后单击“ 设计视图”。
  4. 单击要关联函数的控件或节。
  5. 如果尚未显示属性表,请按 F4 显示它。
  6. 在属性表的“事件”选项卡上,单击要关联函数的事件属性框。
  7. 在属性框中,键入等号 (=) 后跟函数的名称,例如 =MyMacro()。 请务必包含括号。
  8. 通过单击快速访问工具栏上的“保存”来保存窗体或报表。
  9. 在导航窗格中,双击窗体或报表,然后测试代码是否按预期的方式运行。

现在,你已了解向数据库添加 VBA 代码的基本步骤。 本文仅介绍了入门的基础知识。 许多优秀的参考书和在线资源可以帮助你培养编程技能。

另请参阅

创建用户界面 (UI) 宏

使用键盘快捷键运行 Access 宏

使用宏自动执行启动事件

创建在打开数据库时运行的宏

数据库对象的事件顺序

返回页首