使用 "Ctrl+P" 或 "File - Print" 时,在显示打印预览之前不会调用 Workbook.BeforePrint 事件 (Excel)
When using "Ctrl+P" or "File - Print" the Workbook.BeforePrint event (Excel) is not called before the print preview is shown
我想使用 Excel 中的 BeforePrint 事件,以便根据各种参数编辑最终打印输出的页眉和页脚。为了让用户检查页面设置是否正确,需要在显示Excel内的打印预览之前调用此代码。当使用 VBA 代码 ThisWorkbook.PrintPreview
调用打印预览时,事件会在预览显示之前触发,但是当使用 "Ctrl+P" 或 "File - print" 时,直到文档显示时才会调用事件被发送到打印机,因此打印预览不显示最终打印输出。代码 Application.CommandBars.ExecuteMso "PrintPreviewAndPrint"
也导致了同样不令人满意的结果。
我注意到,当使用 ThisWorkbook.PrintPreview
时,预览以全屏模式显示,而其他方法显示 'normal' 打印预览。为了测试事件是否被调用,我使用了下面的一小段代码。
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Debug.Print "BeforePrint"
End Sub
我需要一种万无一失的方法来显示正确的打印预览,所以使用带有上述 VBA 代码的按钮是不可能的。有什么建议吗?
提前致谢,mk
即使您没有透露您使用的 Excel 版本(在这种情况下可能很重要)。恐怕在使用 Ctrl+P 时在打印预览之前调用 .BeforePrint 事件在您的情况下可能无法实现,因为“Excel 2013 及以后不会 运行 Workbook_BeforePrint 在打印预览中。”(用户 OzRoz,2017 年)
以上答案摘自thread which was asking similar question。在回答中,OzRoz 还提到“您可以通过将 'Print Preview Full Screen' 图标添加到您的 QAT(快速访问工具栏) 来将其添加到 运行 进行测试”。 =11=]
也许这为您的问题提供了明确的答案。
我想使用 Excel 中的 BeforePrint 事件,以便根据各种参数编辑最终打印输出的页眉和页脚。为了让用户检查页面设置是否正确,需要在显示Excel内的打印预览之前调用此代码。当使用 VBA 代码 ThisWorkbook.PrintPreview
调用打印预览时,事件会在预览显示之前触发,但是当使用 "Ctrl+P" 或 "File - print" 时,直到文档显示时才会调用事件被发送到打印机,因此打印预览不显示最终打印输出。代码 Application.CommandBars.ExecuteMso "PrintPreviewAndPrint"
也导致了同样不令人满意的结果。
我注意到,当使用 ThisWorkbook.PrintPreview
时,预览以全屏模式显示,而其他方法显示 'normal' 打印预览。为了测试事件是否被调用,我使用了下面的一小段代码。
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Debug.Print "BeforePrint"
End Sub
我需要一种万无一失的方法来显示正确的打印预览,所以使用带有上述 VBA 代码的按钮是不可能的。有什么建议吗?
提前致谢,mk
即使您没有透露您使用的 Excel 版本(在这种情况下可能很重要)。恐怕在使用 Ctrl+P 时在打印预览之前调用 .BeforePrint 事件在您的情况下可能无法实现,因为“Excel 2013 及以后不会 运行 Workbook_BeforePrint 在打印预览中。”(用户 OzRoz,2017 年)
以上答案摘自thread which was asking similar question。在回答中,OzRoz 还提到“您可以通过将 'Print Preview Full Screen' 图标添加到您的 QAT(快速访问工具栏) 来将其添加到 运行 进行测试”。 =11=]
也许这为您的问题提供了明确的答案。