【问题标题】:excel 2007 vba Application.Dialogs(xlDialogPrint).Show crashes if user chooses print previewexcel 2007 vba Application.Dialogs(xlDialogPrint)。如果用户选择打印预览,则显示崩溃
【发布时间】:2011-03-25 12:34:08
【问题描述】:

在 Excel 2007 中,有一个触发宏的按钮,该宏从许多工作表中选择几张并发送到 Application.Dialogs(xlDialogPrint).Show。作为选择几张工作表的一部分,还会触发其他宏,例如显示某些行、密码保护和取消保护等。

它可以正常打印和取消,除非用户单击该打印机对话框中的“打印预览”按钮。它显示打印机对话框很好,但无论他们点击打印还是关闭它都会崩溃。

它似乎第二次运行整个宏并崩溃,因为第一次运行时预期值和设置没有正常到位。

当通过 Application.Dialogs(xlDialogPrint).Show 中的打印机对话框启动打印预览时,有什么方法可以计算或捕获打印预览对话框的内容?

我尝试过更改传递的参数,例如

Application.Dialogs(xlDialogPrint).Show ,,,,,False
Application.Dialogs(xlDialogPrint).Show Arg6:=False

但是这些都不起作用;我读到你无论如何都不能改变对话框。

(希望这很清楚)

【问题讨论】:

  • 如果您先显示打印预览对话框然后用户从那里转到打印对话框怎么办? Application.Dialogs(xlDialogPrintPreview).Show
  • 试过但失败了 8^) 同样的事情,它收集正确的页面,甚至像我设计的那样动态插入页脚信息,但是无论我点击打印还是关闭打印预览都会发生同样的崩溃。似乎再次启动打印功能的相同错误,而不仅仅是将收集的工作表发送到打印机。再次澄清一下,如果使用对话框打印,如果你只是点击打印一切都很好。只是打印预览搞砸了。
  • 在您测试的每台 PC 上都会发生这种情况吗?如果更改默认打印机会发生这种情况吗?

标签: excel vba printing excel-2007


【解决方案1】:

不确定是否要直接通过单击按钮显示打印预览。通常我使用这样的东西。我发现先查看预览比较容易,然后再决定是否要打印一份硬拷贝。但它可能不适用于您的情况。

Private Sub CommandButton1_Click()

    Dim vSheets() As Variant

    vSheets = Array("Sheet1", "Sheet2")
    ActiveWorkbook.Sheets(vSheets).Select 'sheets need to be selected
    ActiveWorkbook.PrintOut preview:=True 'brings up print preview
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多