运行大量VBA后打印预览问题

我有一个Excel工作簿,几乎所有东西都是自动的。 它打开其他工作簿,从中复制数据,关闭它们,然后循环遍历数据以生成我们打印和使用的报告。 几乎每次运行所有VBA并尝试打印后,打印预览都会停留在找到打印机或加载页面大小的过程中,如图所示。 关闭Excel并重新打开文档可将打印预览恢复到正常功能。 与VBA打印有关的唯一事情是更改打印区域。 对于运行VBA的任何其他文档,我没有遇到此问题。 这只是一个错误或可能在代码中的东西?

问题

这是导致打印预览无法以某种方式加载的代码。 如果我跳过这一部分,那么它按预期工作......我想以某种方式让这段代码起作用,因为它仍然是需要的。

    Set wb1 = Workbooks.Open(FileName)
    Set wb2 = ThisWorkbook

    For i = LBound(sArray) To UBound(sArray) 'Loops through array, copies available data from last report
        ShtName = sArray(i, 0)
        On Error Resume Next
            wb1.Sheets(ShtName).Activate
            If Err.Number = 0 Then
                wb1.Sheets(ShtName).Activate
                Columns("A:U").Copy
                wb2.Sheets(ShtName).Activate
                Columns("BE:BV").Select
                Selection.PasteSpecial xlPasteValues
                Application.CutCopyMode = False
                lastrow = Cells(Rows.Count, "BE").End(xlUp).Row
                Range("BA2:BC2").Select
                Selection.AutoFill Destination:=Range(Cells(2, "BA"), Cells(lastrow, "BC")), Type:=xlFillDefault
            End If
        On Error GoTo 0

        DoEvents

    Next i

    wb1.Close False

    Sheet2.Activate

我已经尝试评论“On Error Resume Next”,“On Error Goto 0”,“If ...”,“End If”和“DoEvents”。 打印预览仍然失败,只是从前面的表格中进行复制和粘贴。


似乎删除DoEvents所有实例已解决该问题...

打印预览工作正常,Excel不会在退出工作簿时崩溃。


我相信您正在寻找某种类型的刷新操作,可以将预览显示与工作表上的数据重新同步。 最后你可能想试试这个:

ActiveSheet.EnableCalculation = False  
ActiveSheet.EnableCalculation = True

如果这不起作用,请查看手动保存是否解决了问题。 您可以尝试在最后调用Application.Save


“当您选择文件 - >打印时,打印预览会自动发生,另一种选择是使用页面布局视图(状态栏右侧的图标)。要获得旧式打印预览,您需要使用VBA 。以下语句显示活动工作表的打印预览: ActiveSheet.PrintPreview

引自John Walkenbach的Microsoft Excel 2013 Power Programming with VBA ,第956-957页。

话虽如此,我通过录制一个相对复杂的宏来测试您的问题,该宏创建一个新工作表,执行25个自动操作,并显示打印预览,然后在MsgBox上单击确定时关闭打印预览。 我重复了这个程序来做这1000次。 我从来没有与PrintPreview的问题。

链接地址: http://www.djcxy.com/p/34251.html

上一篇: Print Preview issues after running large amount of VBA

下一篇: Wait for php callback on object instance and return value on function