乐于分享
好东西不私藏

Excel VBA |批量打印所有工作表!

Excel VBA |批量打印所有工作表!

日常处理 Excel 报表时,你是不是也遇到过这些麻烦:✅ 工作簿里有几十个工作表,想批量打印却只能一张张手动点?✅ 想切换打印机打印,却找不到便捷的选择窗口,还怕改完默认打印机忘了恢复?✅ 手动操作又慢又容易漏打,效率低到崩溃?

今天给大家分享一段极简 Excel VBA 代码,不用复杂设置,一键弹出打印机选择框,自动批量打印所有工作表,打印完成还能自动恢复原打印机,办公效率直接拉满!

一、代码核心功能

这段 VBA 代码完美解决了 Excel 批量打印的 3 大痛点:

  1. 调用原生打印机选择框
    :兼容所有新版 Office,不用手动记打印机名称,可视化选打印机;
  2. 批量打印全工作表
    :自动遍历工作簿内所有工作表,一键全部打印,无需手动切换;
  3. 自动恢复原打印机
    :打印前保存默认打印机,打印后自动还原,不影响后续打印设置。

二、完整 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

三、代码逐行解析(看懂更放心)

怕代码看不懂?给大家拆解核心逻辑,每一步都清清楚楚:

  1. 定义变量
    ws代表工作表,原打印机用来存储你原本的默认打印机名称;
  2. 保存原打印机
    原打印机 = Application.ActivePrinter,提前备份默认设置;
  3. 弹出打印机选择框
    Application.Dialogs(xlDialogPrinterSetup).Show,调用 Excel 自带的打印机选择窗口,安全无插件;
  4. 批量打印
    For Each ws In ThisWorkbook.Worksheets循环所有工作表,ws.PrintOut执行打印;
  5. 恢复设置 + 提示
    :打印完自动还原打印机,最后弹出完成提示。

四、3 步手把手教你运行代码

第 1 步:打开 VBA 编辑器

打开需要批量打印的 Excel 文件,按下快捷键 Alt + F11,直接调出 VBA 编辑器。

第 2 步:插入模块并粘贴代码

右键左侧你的工作簿名称 → 选择【插入】→【模块】,把上面的完整代码复制粘贴到右侧空白窗口中。

第 3 步:运行代码,一键打印

按下 F5 键,或点击工具栏的【运行】按钮,瞬间弹出打印机选择框,选好打印机后确认,自动批量打印所有工作表!

五、实用小技巧

  1. 只打印指定工作表
    :如果不想打印全部,只需把代码中ThisWorkbook.Worksheets改成指定工作表名称(如Sheets(Array("Sheet1","Sheet2")));
  2. 兼容所有 Office 版本
    :代码适配 Office 2016/2019/2021/365 所有新版,Mac/Windows 通用;

六、总结

这段 Excel VBA 批量打印代码,真正做到极简、高效、安全:不用手动一张张打印,不用纠结打印机切换,不用怕修改设置忘了恢复,3 秒搞定批量打印,彻底解放双手!

但是请在打印前对页面进行设置,浏览一下打印预览,不然打印出的东西未必就是你需要的!

赶紧收藏起来,下次打印 Excel 报表直接用,办公效率提升 10 倍!