【问题标题】:How do I pause Macro until either print or back is selected in Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")如何暂停宏,直到在 Application.CommandBars.ExecuteMso(“PrintPreviewAndPrint”)中选择打印或返回
【发布时间】:2017-06-30 10:03:02
【问题描述】:

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

我想打开“后台”PrintPreviewandPrint 页面以允许同时选择打印机属性并预览选定的工作表以进行打印。单击打印或返回箭头后,我想关闭打印预览和打印页面并选择“主”屏幕。

当我使用时

Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")

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

代码是

Private Sub PrintDoc()

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

任何帮助将不胜感激

【问题讨论】:

  • 也许使用 Application.Dialogs(xlDialogPrintPreview).Show 效果更好?不一样,但至少会等到您退出打印预览。
  • 我尝试使用 PrintPreview,但发现我想要更改打印机设置的选项。我想知道我可以使用什么事件来触发对主页的选择。

标签: excel printing print-preview vba


【解决方案1】:
  • 删除工作表(“主页”)。选择
  • 在包含您的 PrintDoc 的模块中添加一个例程:

    Sub AfterPrint()
        Sheets("Home").Select
    End Sub
    
  • 将其放入您的 ThisWorkbook 模块中

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

【讨论】:

  • 如果用户决定打印,则有效,但选择后箭头时,“doc”工作表仍处于活动状态。试图弄清楚后退箭头的事件是什么,以便在单击它时触发“主页”页面。
  • 恐怕没有事件被触发,就像取消菜单一样。
【解决方案2】:

我找到了一个有点混乱的解决方案...

首先我调用打印预览:

Sub Printdoc()

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

End Sub

如果选择了打印,我会调用打印对话框

Private Sub Workbook_BeforePrint(Cancel As Boolean)

    Application.Dialogs(xlDialogPrint).Show

End Sub

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多