【问题标题】:When using "Ctrl+P" or "File - Print" the Workbook.BeforePrint event (Excel) is not called before the print preview is shown使用“Ctrl+P”或“文件 - 打印”时,在显示打印预览之前不会调用 Workbook.BeforePrint 事件 (Excel)
【发布时间】:2019-05-24 10:25:48
【问题描述】:

我想在 Excel 中使用 BeforePrint 事件,以便根据各种参数编辑最终打印输出的页眉和页脚。为了让用户检查页面设置是否正确,需要在 Excel 中显示打印预览之前调用此代码。使用 VBA 代码ThisWorkbook.PrintPreview 调用打印预览时,会在显示预览之前触发该事件,但是当使用“Ctrl+P”或“文件 - 打印”时,在文档发送到打印机之前不会调用该事件,所以打印预览不会显示最终的打印输出。代码Application.CommandBars.ExecuteMso "PrintPreviewAndPrint" 也会导致同样不满意的结果。

我注意到,当使用ThisWorkbook.PrintPreview 时,预览以全屏模式显示,而其他方法显示“正常”打印预览。为了测试是否调用了事件,我使用了以下一小段代码。

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Debug.Print "BeforePrint"
End Sub

我需要一种显示正确打印预览的万无一失的方法,因此无法选择使用带有上述 VBA 代码的按钮。有什么建议吗?

提前致谢,mk

【问题讨论】:

    标签: excel vba events printing preview


    【解决方案1】:

    即使您没有透露您使用的是哪个 Excel 版本(在这种情况下可能很重要)。我担心在您的情况下,使用 Ctrl+P 在打印预览之前调用 .BeforePrint 事件可能是不可能的,因为“Excel 2013 及更高版本不会在打印预览上运行 Workbook_BeforePrint。”(用户奥兹罗兹,2017)

    以上答案来自thread which was asking similar question。在回答中,OzRoz 还提到“您可以通过将“打印预览全屏”图标添加到 QAT(快速访问工具栏)来运行它以进行测试

    也许这可以为您的问题提供明确的答案。

    【讨论】:

    • 非常感谢您的回复。我使用 Office 365 ProPlus,所以我想我必须使用解决方法(例如,不能错过的巨大按钮)进行打印;)。
    猜你喜欢
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多