最直接、最常用的方法:使用功能区按钮
这是最直观的方法,适用于在“数据表视图”、“窗体视图”或“报表视图”下快速打印。

-
操作步骤:
- 打开你想要打印的对象(表、查询、窗体或报表)。
- 在顶部的 “开始” 选项卡中,找到 “记录” 组。
- 点击 “打印” 按钮(图标通常是一个打印机)。
-
适用场景:
- 数据表/查询: 打印当前数据表视图中的所有可见记录。
- 窗体: 打印当前窗体视图中的所有记录(如果窗体设置为“连续窗体”模式)或仅当前记录。
- 报表: 这是最推荐用于打印报表的方式,它会弹出“打印”对话框,让你选择打印机、份数等。
使用“打印”对话框进行精确控制
当你需要指定打印机、打印范围或份数时,使用打印对话框是最佳选择。
-
操作步骤:
(图片来源网络,侵删)- 打开要打印的对象(特别是报表)。
- 按下快捷键
Ctrl + P。 - 或者,点击 “文件” 选项卡,然后选择 “打印”。
这两种方法都会打开同一个“打印”对话框。
-
对话框中的关键选项:
- 打印机: 选择你要使用的打印机。
- 打印范围:
- 全部: 打印所有记录或所有页面。
- 页: 打印指定的页面范围(从第 2 页到第 5 页)。
- (仅报表):
- 只打印你在报表视图中选定的部分。
- 当前记录: 只打印窗体或报表中当前显示的单条记录。
- 所有记录: 打印所有记录。
- 份数: 设置打印的份数。
- 打印预览: 在实际打印前,先预览打印效果。
通过 VBA 代码实现打印(自动化)
在 VBA (Visual Basic for Applications) 中,你可以通过代码来控制打印过程,非常适合在按钮点击事件或宏中实现自动化打印。
a) 打印当前活动对象(最简单)
' 打印当前打开的报表、窗体或数据表 DoCmd.PrintOut
- 说明: 这会直接使用默认的打印设置进行打印,不会弹出“打印”对话框。
b) 打印报表并弹出对话框(推荐)
这是在 VBA 中打印报表最灵活、最用户友好的方式。

' 打开指定的报表,并显示“打印”对话框让用户选择 DoCmd.OpenReport "你的报表名称", acViewNormal, , , acDialog
- 说明:
acViewNormal:表示以打印视图(而不是预览视图)打开报表。acDialog:这是关键参数,它会强制 Access 显示标准的“打印”对话框,让用户可以选择打印机和设置。你的报表名称:需要替换为你数据库中实际存在的报表名称。
c) 打印特定条件的报表(最常用)
这是实际应用中最常见的场景,打印某个订单的报表。
' 示例:打印订单ID为 12345 的订单报表 Dim strWhereCondition As String strWhereCondition = "订单ID = 12345" ' 你的筛选条件 DoCmd.OpenReport "你的订单报表名称", acViewNormal, , strWhereCondition, acDialog
- 说明:
- 第三个参数
, , strWhereCondition用于指定筛选条件(Where子句)。 - 这样只有满足
订单ID = 12345的记录才会被包含在报表中并进行打印。
- 第三个参数
d) 静默打印(不弹出对话框)
如果你希望打印过程完全自动化,不希望用户看到任何对话框。
' 静默打印所有记录 DoCmd.OpenReport "你的报表名称", acViewNormal ' 或者使用 PrintOut 方法(同样不弹出对话框) ' DoCmd.PrintOut acPrintAll, , , acHigh
使用宏实现打印
如果你不熟悉 VBA,可以使用宏来完成简单的打印任务。
- 在 “创建” 选项卡中,点击 “宏” 或 “宏与代码” 组中的 “宏”。
- 在宏设计器中,从 “操作” 列的下拉菜单中选择
OpenReport。 - 在下方的参数中设置:
- 报表名称: 选择你要打印的报表。
- 视图: 选择
打印。 - 当条件: (可选)输入筛选条件,
[订单ID] = 12345。 - 窗口模式: 选择
普通。
- 保存宏,并将其附加到一个按钮的
单击事件上。
总结与对比
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 功能区按钮 | 快速打印当前视图 | 简单快捷,无需代码 | 控制选项少,无法精确筛选 |
| 打印对话框 (Ctrl+P) | 需要选择打印机、份数等 | 控制最全面,用户友好 | 每次都需要手动操作 |
VBA DoCmd.PrintOut |
后台自动化打印,不关心打印设置 | 代码简单,直接执行 | 无用户交互,无法选择打印机 |
VBA DoCmd.OpenReport |
自动化打印报表,并保留用户控制 | 最推荐,灵活性强,可带筛选条件 | 需要编写 VBA 代码 |
| 宏 | 简单的自动化打印,适合初学者 | 可视化创建,无需编程 | 功能比 VBA 有限,调试稍显复杂 |
最佳实践建议:
- 用户交互打印: 为窗体或报表上的按钮添加 VBA 事件,使用
DoCmd.OpenReport并带上acDialog参数,这是兼顾自动化和用户体验的最佳方式。 - 后台批量打印: 如果是系统定时任务或不需要用户干预的场景,可以使用
DoCmd.PrintOut或DoCmd.OpenReport(不带acDialog)进行静默打印。
