运行大量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