日常处理 Excel 报表时,你是不是也遇到过这些麻烦:✅ 工作簿里有几十个工作表,想批量打印却只能一张张手动点?✅ 想切换打印机打印,却找不到便捷的选择窗口,还怕改完默认打印机忘了恢复?✅ 手动操作又慢又容易漏打,效率低到崩溃?
今天给大家分享一段极简 Excel VBA 代码,不用复杂设置,一键弹出打印机选择框,自动批量打印所有工作表,打印完成还能自动恢复原打印机,办公效率直接拉满!
一、代码核心功能
这段 VBA 代码完美解决了 Excel 批量打印的 3 大痛点:
- 调用原生打印机选择框
:兼容所有新版 Office,不用手动记打印机名称,可视化选打印机; - 批量打印全工作表
:自动遍历工作簿内所有工作表,一键全部打印,无需手动切换; - 自动恢复原打印机
:打印前保存默认打印机,打印后自动还原,不影响后续打印设置。
二、完整 VBA 代码(直接复制可用)
无需修改任何参数,复制粘贴到 Excel VBA 编辑器里就能用,新手也能零门槛操作:
Sub 弹出打印机选择框_批量打印所有工作表()
Dim ws As Worksheet
Dim 原打印机 AsString
'保存当前默认打印机,避免后续设置被篡改
原打印机 = Application.ActivePrinter
'=========调用Excel原生打印机选择窗口(新版Office专属)=========
Application.Dialogs(xlDialogPrinterSetup).Show
'============================================================
'循环遍历所有工作表,批量执行打印
For Each ws In ThisWorkbook.Worksheets
ws.PrintOut
Next ws
'打印完成后,自动恢复原本的默认打印机
Application.ActivePrinter = 原打印机
'弹出提示框,告知打印完成
MsgBox "所有工作表已批量打印完成!", vbInformation
End Sub
三、代码逐行解析(看懂更放心)
怕代码看不懂?给大家拆解核心逻辑,每一步都清清楚楚:
- 定义变量
: ws代表工作表,原打印机用来存储你原本的默认打印机名称; - 保存原打印机
: 原打印机 = Application.ActivePrinter,提前备份默认设置; - 弹出打印机选择框
: Application.Dialogs(xlDialogPrinterSetup).Show,调用 Excel 自带的打印机选择窗口,安全无插件; - 批量打印
: For Each ws In ThisWorkbook.Worksheets循环所有工作表,ws.PrintOut执行打印; - 恢复设置 + 提示
:打印完自动还原打印机,最后弹出完成提示。
四、3 步手把手教你运行代码
第 1 步:打开 VBA 编辑器
打开需要批量打印的 Excel 文件,按下快捷键 Alt + F11,直接调出 VBA 编辑器。
第 2 步:插入模块并粘贴代码
右键左侧你的工作簿名称 → 选择【插入】→【模块】,把上面的完整代码复制粘贴到右侧空白窗口中。
第 3 步:运行代码,一键打印
按下 F5 键,或点击工具栏的【运行】按钮,瞬间弹出打印机选择框,选好打印机后确认,自动批量打印所有工作表!
五、实用小技巧
- 只打印指定工作表
:如果不想打印全部,只需把代码中 ThisWorkbook.Worksheets改成指定工作表名称(如Sheets(Array("Sheet1","Sheet2"))); - 兼容所有 Office 版本
:代码适配 Office 2016/2019/2021/365 所有新版,Mac/Windows 通用;
六、总结
这段 Excel VBA 批量打印代码,真正做到极简、高效、安全:不用手动一张张打印,不用纠结打印机切换,不用怕修改设置忘了恢复,3 秒搞定批量打印,彻底解放双手!
但是请在打印前对页面进行设置,浏览一下打印预览,不然打印出的东西未必就是你需要的!
赶紧收藏起来,下次打印 Excel 报表直接用,办公效率提升 10 倍!
夜雨聆风