簡體   English   中英

Excel VBA打印凍結

[英]Excel VBA Print Freezes

我已經嘗試了很多解決方案,並在網上瀏覽了多個小時。 也許你們其中之一可以提供幫助。

我有一個宏,可以選擇名稱中帶有特定字符串的所有工作表,然后進行打印。 如果工作表太多,它將凍結,並且您將無法中斷要調試的宏,而Ctrl + Alt + Del是唯一的出路。 每次也會凍結在不同的位置...

我的原始代碼:

Application.ScreenUpdating = False
Application.EnableEvents = False
Dim x As Integer
For x = 1 To Worksheets.count
    If VBA.InStr(Worksheets(x).Name, "Lateral Assessment") > 0 Then
        With Worksheets(x).PageSetup
            .Orientation = xlPortrait
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
        Worksheets(x).PrintOut
    End If
Next x
Application.ScreenUpdating = True
Application.EnableEvents = True

我在其他論壇線程中嘗試了以下方法:

  • 在循環中添加DoEvents以允許系統時間進行處理
  • 添加“等待”計時器以使其有時間處理
  • 首先循環並設置pagesetup屬性,然后進行打印(完成循環以將pagesetups設置得很好,但像“正常”一樣凍結在打印循環中
  • 轉移到將所有工作表添加到陣列中,然后將它們作為一個打印作業發送(在14-16頁后仍然凍結)

我還曾在一點上添加了一個進度條,我在許多較大的流程中都使用了它,您可以看到進度條一直在計數,然后凍結在不一致的工作表編號上。 另外,請注意,即使我從VBA代碼窗口一次運行一次迭代,也會出現該問題,因此,它似乎與處理時間無關(盡管不能確定該時間)。

我當前的代碼:

Application.ScreenUpdating = False
Application.EnableEvents = False
Dim x As Long, iTotal As Long, sSheets() As String
iTotal = -1
For x = 1 To Worksheets.count
    If VBA.InStr(Worksheets(x).Name, "Lateral Assessment") > 0 Then
        With Worksheets(x).PageSetup
            .Orientation = xlPortrait
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
        iTotal = iTotal + 1
        ReDim Preserve sSheets(iTotal)
        sSheets(iTotal) = Worksheets(x).Name
    End If
Next x

If iTotal <> -1 Then
    Sheets(sSheets).PrintOut Copies:=1, Collate:=True
End If

Application.ScreenUpdating = True
Application.EnableEvents = True

知道為什么會這樣,還有我沒有嘗試過的可能解決方案嗎?

確保ScreenUpdating已打開。 VBA代碼為:Application.ScreenUpdating = True

如果掛起,則可以正常工作。 調整打印預覽窗口的大小(抓住拐角或邊緣,然后再變小再變大)。 這似乎導致Excel進入ScreenUpdating並給您控制權。 為了以防萬一,因此您始終可以訪問窗口的邊緣,因此可以在printpreview之前自動調整Excel的大小,方法是:

Sub WindowState_850x1400()
  With Application
    .WindowState = xlNormal
    .Top = 1
    .Left = 1
    .Height = 850
    .Width = 1400
  End With
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM