使用“ Ctrl + P”或“文件-打印”时,在显示打印预览之前不会调用Workbook.BeforePrint事件(Excel)

时间:2019-05-24 10:25:49

标签: excel vba events printing preview

我想在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

1 个答案:

答案 0 :(得分:0)

即使您没有透露所使用的Excel版本(在这种情况下也很重要)。恐怕在您的情况下,可能无法在使用Ctrl + P的情况下在打印预览之前调用.BeforePrint事件,因为“ Excel 2013及更高版本无法在打印预览上运行Workbook_BeforePrint。”(用户厄兹罗兹,2017年)

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

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

相关问题