当前位置:  开发笔记 > 后端 > 正文

在Excel中打印速度更快

如何解决《在Excel中打印速度更快》经验,为你挑选了1个好方法。

Excel(使用VBA)的打印功能非常慢.我希望有人有办法加快打印速度(不使用Excel 4 Macro技巧).我现在就是这样做的:

Application.ScreenUpdating = False

With ActiveSheet.PageSetup

  -various setup statements which I've already minimized-

End With   
ActiveSheet.PrintOut

Application.ScreenUpdating = True

Mike Rosenbl.. 8

是的,设置它们时,PageSetup属性非常慢.

你已经设置了Application.ScreenUpdating = False,这很好,但在这种情况下同样(或更重要)的步骤是设置Application.Calculation = xlCalculationManual.(最好是保存这些设置,然后在最后将它们恢复为原始设置.)

此外,每个PageSetup属性的属性get非常快,而只有属性集的速度非常慢.因此,您应该测试新属性设置以确保它与现有属性值不同,以防止不必要(且昂贵)的调用.

考虑到所有这些,您应该能够使用类似于以下内容的代码:

Dim origScreenUpdating As Boolean
origScreenUpdating = Application.ScreenUpdating
Application.ScreenUpdating = False

Dim origCalcMode As xlCalculation
origCalcMode =  Application.Calculation
Application.Calculation = xlCalculationManual

With ActiveSheet.PageSetup
    If .PrintHeadings <> False Then .PrintHeadings = False
    If .PrintGridlines <> False Then .PrintGridlines = False
    If .PrintComments <> xlPrintNoComments Then .PrintComments = xlPrintNoComments
    ' Etc...
End With

Application.ScreenUpdating = origScreenUpdating
Application.Calculation = origCalcMode

编辑:一些更新:

    对于Excel 2010及更高版本,您可以使用"Application.PrintCommunication"属性,而对于Excel 2007及更低版本,您可以使用"ExecuteExcel4Macro".有关更多详细信息,请参阅将Excel 4宏迁移到VBA.

    对于Excel 2007及更低版本,另一个有趣的技巧是暂时将打印机驱动程序分配给"Microsoft XPS Document Writer",然后将其重新设置.打印速度可提高3倍.请参阅:慢速Excel页面设置方法.

希望这可以帮助...



1> Mike Rosenbl..:

是的,设置它们时,PageSetup属性非常慢.

你已经设置了Application.ScreenUpdating = False,这很好,但在这种情况下同样(或更重要)的步骤是设置Application.Calculation = xlCalculationManual.(最好是保存这些设置,然后在最后将它们恢复为原始设置.)

此外,每个PageSetup属性的属性get非常快,而只有属性集的速度非常慢.因此,您应该测试新属性设置以确保它与现有属性值不同,以防止不必要(且昂贵)的调用.

考虑到所有这些,您应该能够使用类似于以下内容的代码:

Dim origScreenUpdating As Boolean
origScreenUpdating = Application.ScreenUpdating
Application.ScreenUpdating = False

Dim origCalcMode As xlCalculation
origCalcMode =  Application.Calculation
Application.Calculation = xlCalculationManual

With ActiveSheet.PageSetup
    If .PrintHeadings <> False Then .PrintHeadings = False
    If .PrintGridlines <> False Then .PrintGridlines = False
    If .PrintComments <> xlPrintNoComments Then .PrintComments = xlPrintNoComments
    ' Etc...
End With

Application.ScreenUpdating = origScreenUpdating
Application.Calculation = origCalcMode

编辑:一些更新:

    对于Excel 2010及更高版本,您可以使用"Application.PrintCommunication"属性,而对于Excel 2007及更低版本,您可以使用"ExecuteExcel4Macro".有关更多详细信息,请参阅将Excel 4宏迁移到VBA.

    对于Excel 2007及更低版本,另一个有趣的技巧是暂时将打印机驱动程序分配给"Microsoft XPS Document Writer",然后将其重新设置.打印速度可提高3倍.请参阅:慢速Excel页面设置方法.

希望这可以帮助...

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有