如何在Application.CommandBars.ExecuteMso(“PrintPreviewAndPrint”)中选择打印或返回之前暂停宏

时间:2017-06-30 10:03:03

标签: excel-vba printing print-preview vba excel

我有一个用户表单,用于选择要打印的工作表,然后在单击命令按钮后打印它们。

我想打开“Backstage”PrintPreviewandPrint页面,以便同时选择打印机属性并预览所选的打印纸张。点击打印或后退箭头后,我想要PrintPreview和打印页面关闭并选择“主页”屏幕。

当我使用

Application.CommandBars.ExecuteMso(“PrintPreviewAndPrint”)

显示所需的屏幕,但宏继续运行,打印预览显示主屏幕。即,在继续之前,宏不会等待PrintPreviewandPrint页面的输入。

代码是

Private Sub PrintDoc()

Sheets("Doc").Select
Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
Sheets("Home").Select
End Sub

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

我发现了一个稍微凌乱的解决方案......

首先,我用以下方式调用打印预览:

Sub Printdoc()

    Sheets("Doc").PrintPreview
    Sheets("Home").Select

End Sub

如果选择了打印,则调用打印对话

Private Sub Workbook_BeforePrint(Cancel As Boolean)

    Application.Dialogs(xlDialogPrint).Show

End Sub

无论哪种方式(打印或取消),PrintDoc宏都会通过显示“主页”屏幕来完成

答案 1 :(得分:0)

  • 删除表格(" Home")。选择
  • 在包含PrintDoc的模块中添加例程:

    Sub AfterPrint()
        Sheets("Home").Select
    End Sub
    
  • 将此内容放入ThisWorkbook模块

    Private Sub Workbook_BeforePrint(Cancel As Boolean)
        Application.OnTime Now, "AfterPrint"
    End Sub