菜鸟科技网

Access 2010宏命令如何快速入门?

在 Access 2010 中,微软引入了一种全新的、功能强大的宏编程环境,称为 “宏生成器”,这与早期版本(如 Access 2003)的宏系统有本质区别,新宏基于 “宏操作”“数据宏” 两大核心,使得开发者无需编写 VBA 代码也能实现非常复杂的自动化逻辑。

Access 2010宏命令如何快速入门?-图1
(图片来源网络,侵删)

宏的基本概念

是一系列操作的集合,这些操作由 Access 自动按顺序执行,你可以把宏理解成一个“剧本”,Access 按照剧本上的指令一步步完成工作。

Access 2010 宏的优势:

  • 无需编程: 对于简单的任务,通过图形化界面就能创建,比 VBA 更直观。
  • 安全: 默认情况下,宏是“受信任的”,不会像旧版宏那样容易受到病毒攻击。
  • 功能强大: 新宏不仅能操作界面,还能直接操作数据表中的记录(数据宏)。
  • 与事件紧密结合: 宏可以轻松地附加到窗体、报表、控件的各种事件上(如“单击”、“打开”、“更新后”等)。

宏的两大类型

Access 2010 的宏分为两种,分别用于处理不同层面的问题。

常规宏

常规宏用于 用户界面层 的自动化,

Access 2010宏命令如何快速入门?-图2
(图片来源网络,侵删)
  • 打开或关闭窗体/报表。
  • 筛选或查找数据。
  • 显示消息框。
  • 运行另一个宏或查询。
  • 导入/导出数据。

如何创建常规宏?

  1. 在“创建”选项卡中,点击“宏”按钮。
  2. 这将打开“宏生成器”窗口,它看起来像一个表格。
  3. 在“操作”列的下拉列表中选择你想要执行的动作。
  4. 在下方的“操作参数”区域为这个动作设置具体参数。
  5. 点击“添加新操作”来添加下一个动作,宏会按从上到下的顺序执行。

数据宏

数据宏是 Access 2010 的一个革命性功能,它直接 在数据表层面 工作,无论数据是通过窗体、查询还是直接在表中修改,只要触发了特定条件,数据宏就会执行。

数据宏分为两种:

  • 更改前: 在记录被更改(插入、更新、删除)之前触发,常用于数据验证,防止无效数据被保存。
  • 更改后: 在记录被更改之后触发,常用于审计日志、级联更新/删除、发送通知等。

如何创建数据宏?

Access 2010宏命令如何快速入门?-图3
(图片来源网络,侵删)
  1. 在导航窗格中,右键单击你要添加数据宏的表,选择“视图” -> “设计视图”。
  2. 在“表格设计”选项卡中,点击“数据表”选项卡下的“数据宏”按钮。
  3. 选择“创建数据宏”,然后选择是“更改前”还是“更改后”。
  4. 接下来的界面和常规宏的宏生成器一样,你可以添加操作。

常用宏操作详解

下面是一些最常用和最核心的宏操作,并附上示例说明。

类别 操作名称 功能描述 常用参数 示例场景
窗口管理 OpenForm 打开指定的窗体。 窗体名称: 要打开的窗体。
视图: 窗体、数据表、设计等。
筛选条件: 设置窗体打开时的默认筛选。
点击“客户列表”窗体中的“订单”按钮,打开“订单”窗体,并自动筛选出该客户的订单。
Close 关闭指定的对象。 对象类型: 窗体、报表等。
对象名称: 要关闭的对象名称。
保存: 提示/保存/不保存。
用户完成数据输入后,点击“保存并关闭”按钮,执行此宏来关闭当前窗体。
导航 GoToControl 将焦点移动到窗体或报表上的指定控件。 控件名称: 目标控件的名称。 打开窗体后,自动将光标定位到“员工姓名”输入框。
GoToRecord 移动到指定记录。 对象类型: 窗体、数据表。
对象名称
记录: 首记录、尾记录、新记录等。
点击“下一个”按钮,移动到窗体中的下一条记录。
数据操作 RunCommand 执行一个内置的 Access 命令。 命令: 如 acCmdSaveRecord (保存记录), acCmdUndo (撤销), acCmdRefresh (刷新)。 创建一个自定义工具栏按钮,点击后执行“保存记录”命令。
RunSQL 执行一个 SQL 语句。 SQL 语句: 要执行的 SQL 命令字符串。 在窗体中点击“归档”按钮,执行一个 UPDATE 语句,将记录状态改为“已归档”。
程序流程 If 创建条件逻辑,如果条件为真,则执行一组操作。 表达式: 条件表达式,如 [订单金额] > 1000 检查订单金额,如果超过1000元,则弹出一个提示框。
MessageBox 显示一个消息框。 消息: 要显示的文本。
发嘟嘟声: 是否发出声音。
类型: 信息、警告、严重等。
操作成功后显示“数据已保存!”;操作失败前显示“确认删除此记录吗?”。
RunMacro 运行另一个宏。 宏名称: 要运行的宏名称。
重复次数/重复表达式: 控制循环。
将常用的操作(如“打开设置窗体”)封装成一个宏,然后在多个地方调用它。
数据导入/导出 TransferSpreadsheet 在 Access 表和 Excel 文件之间导入或导出数据。 数据库类型: acSpreadsheet
电子表格类型: acSpreadsheetTypeExcel12Xml (xlsx)。
表名称: Access 表名。
文件名: Excel 文件路径。
范围: Excel 中的工作表名或单元格范围。
点击“导出报表”按钮,将“销售报表”数据导出到一个 Excel 文件中。
TransferText 在 Access 表和文本文件之间导入或导出数据。 类似于 TransferSpreadsheet,但用于文本文件(如 .csv, .txt)。 导入一个逗号分隔的文本文件到临时表中。

宏的实战示例

示例1:创建一个登录验证宏

目标: 在打开主窗体前,先检查用户名和密码是否正确。

  1. 创建一个名为 f_login 的登录窗体,有两个文本框 txtUsernametxtPassword,一个名为 cmdLogin 的按钮。

  2. cmdLogin 按钮的“单击”事件创建一个宏。

  3. 在宏生成器中,添加以下操作:

    操作 参数
    If 表达式: Not IsNull(DLookup("UserID", "t_Users", "Username = '" & [Forms]![f_login]![txtUsername] & "' AND Password = '" & [Forms]![f_login]![txtPassword] & "'"))
    (这是一个复杂的表达式,意思是:如果在 t_Users 表中能找到一个匹配的用户名和密码,则条件为真)
    ...If 块内的操作:
    CloseWindow 对象类型: 窗体
    对象名称: f_login
    保存: 提示
    OpenForm 窗体名称: f_main (主窗体)
    视图: 窗体
    窗口模式: 普通
    ...ElseIf 块内的操作:
    MessageBox 消息: "用户名或密码错误!"
    类型: 警告
  4. 保存宏,并将其命名为 m_Login_Click

  5. 返回 f_login 窗体的设计视图,选中 cmdLogin 按钮,在“属性表”窗格的“事件”选项卡中,将“单击”事件设置为 m_Login_Click

示例2:创建一个数据宏来记录审计日志

目标:t_Orders 表中的记录被修改时,自动在 t_AuditLog 表中创建一条日志。

  1. 确保 t_AuditLog 表存在,并包含字段:LogID (自动编号), TableName (文本), RecordID (数字, 关联订单ID), ActionType (文本, 如 "Update"), ChangedBy (文本, 用户名), ChangeDate (日期/时间)。

  2. 打开 t_Orders 表的设计视图,切换到“数据表”选项卡,点击“数据宏” -> “创建数据宏” -> “更改后”。

  3. 在宏生成器中,添加以下操作:

    操作 参数
    SetLocalVar 名称: varCurrentUser
    表达式: CurrentUser()
    CreateRecord 别名: newLog (在 t_AuditLog 表中创建新记录)
    ...SetField 块内的操作:
    SetField 名称: newLog.TableName
    : "t_Orders"
    SetField 名称: newLog.RecordID
    : [ID] (当前被修改的订单ID)
    SetField 名称: newLog.ActionType
    : "Update"
    SetField 名称: newLog.ChangedBy
    : [varCurrentUser]
    SetField 名称: newLog.ChangeDate
    : Now()
    SaveRecord (保存新创建的日志记录)
  4. 保存这个数据宏,无论何时何地修改 t_Orders 表中的数据,这条审计日志都会被自动创建。


宏与 VBA 的选择

虽然 Access 2010 的宏非常强大,但在某些情况下,VBA 仍然是更好的选择。

特性 VBA
易用性 ,图形化界面,直观易懂。 ,需要编写代码,有一定的学习曲线。
功能范围 广泛,但仍有局限,无法直接操作文件系统、API 调用等。 极其强大,可以访问 Access 的所有对象模型,并调用 Windows API。
错误处理 较弱,错误处理机制不如 VBA 的 On Error GoTo 灵活。 强大,拥有完善的错误捕获和处理机制 (Try...Catch 模拟)。
性能 对于简单任务足够,对于复杂循环或大量数据处理,性能可能不如 VBA。 通常更快,尤其是在处理复杂逻辑、循环和算法时。
适用场景 - 快速原型开发
- 简单的UI自动化
- 数据验证和审计日志
- 不想学习编程的用户
- 复杂的业务逻辑
- 自定义函数
- 与外部应用程序交互
- 高性能要求的任务
- 代码复用和模块化设计

总结建议:

  • 优先使用宏:对于80%的日常自动化任务,宏已经足够强大且易于维护,从宏开始,可以大大提高开发效率。
  • 切换到 VBA:当你发现宏无法实现你的需求,或者逻辑变得异常复杂、难以维护时,就应该考虑将宏转换为 VBA 模块,在宏生成器的“将宏转换为 Visual Basic Basic 代码”按钮可以帮你快速生成初始 VBA 代码。

希望这份详细的指南能帮助你掌握 Access 2010 的宏命令!

分享:
扫描分享到社交APP
上一篇
下一篇