解决Excel中VBA批量打印速度慢的问题

iamlaosong

VBA循环打印对账单时,循环一次发出一个打印命令(本应用只打印一页),导致打印速度很慢,时间都浪费在电脑与打印机握手上面了。要解决这个问题,一种方法是打印前将内容合并,另一种方法是输出到文件,然后合并打印。最好的方法当然是第一种,但有时无法在打印前合并内容,例如打印内容涉及图片、条码、二维码、套打等,那么只有采用第二种方法。

为了增加灵活性,程序设置了一个输出参数pm,内容定义如下:

输出:0=到打印机;其它(n)=按n*100分组到文件

之所以要进行分组,是因为如果要打印的记录太多,合并的文件太多,合并的速度也慢。

        If pm = 0 Then
            ActiveSheet.PrintOut
        Else
            pn = Int((rr - rr1) / (pm * 100))
            pdf = ThisWorkbook.Path & "\pdf" & pn
            If pm <> 0 And Dir(pdf, vbDirectory) = vbNullString Then
                MkDir pdf
            End If

            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdf & "\对账单" & Format(rr, "000000") & ".pdf"
        End If

这个输出到pdf的语句ExportAsFixedFormat到2010版本才是可以用的,2007则不行。合并pdf就简单了,用什么合并工具都行,比如下图所示的Adobe Acrobat 8 Professional:

最后,网上看到有人说安装一个PdfFactory Pro虚拟打印机,在页面设置中指定它为当前打印机,它与内置的pdf打印印机不同,会把打印的内容合成一个PDF文件。这个方法也挺好,不过我没试过,可以试试。

顺便说一下,Office 2010发布了32位版本和64位版本。VBA由版本6升级到版本7,VBA7随Office 2010发布,支持能够运行32位和64位Office的代码的开发。参见:32 位和 64 位版本的 Office 2010 之间的兼容性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值