You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel宏调用PrintPreviewAndPrint实现多工作表打印预览问题求助

问题根因

你推测的原因正确,ExecuteMso调用PrintPreviewAndPrint时会重置当前工作表选中状态,仅保留激活的单个工作表,因此只会预览单个工作表。

可行方案

方案1:最简修复(适配Excel 2010及以上版本)

直接调用选中工作表集合的打印预览方法,即可保留多工作表选中状态,唤起的界面支持配置打印机、打印份数等所有参数:

Sub PrintReport()
' PrintReport Macro
    ' 选中目标工作表,Replace:=True确保替换原有选择
    Sheets(Array("Cover page", "Scoresheet")).Select Replace:=True
    ' 唤起带参数配置的打印预览界面
    ActiveWindow.SelectedSheets.PrintPreview
End Sub

方案2:临时工作簿兼容方案(适配所有Excel版本,完全匹配原生「文件-打印」界面)

如果方案1唤起的是旧版无侧边栏参数的预览界面,可以用临时工作簿中转实现需求,操作全程无感知:

Sub PrintReport()
' PrintReport Macro
    Dim originalWb As Workbook
    Dim tempWb As Workbook
    Dim targetSheets As Variant
    
    Set originalWb = ThisWorkbook
    targetSheets = Array("Cover page", "Scoresheet")
    
    ' 关闭屏幕刷新避免闪屏
    Application.ScreenUpdating = False
    
    ' 将目标工作表复制到新临时工作簿
    originalWb.Sheets(targetSheets).Copy
    Set tempWb = ActiveWorkbook
    
    ' 唤起原生带预览的打印界面
    Application.CommandBars.ExecuteMso "PrintPreviewAndPrint"
    
    ' 操作完成后自动关闭临时工作簿,不留下临时文件
    tempWb.Close SaveChanges:=False
    
    ' 恢复屏幕刷新
    Application.ScreenUpdating = True
End Sub

两种方案都支持用户自主调整所有打印参数,最终打印内容为指定的多个工作表。

内容的提问来源于stack exchange,提问作者IainMackay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:45:06