[update below]VBA宏打印循環
我一直在爲我的製作表編寫一個打印宏。
除了實際的打印輸出外,其他所有的東西都很棒。如果我使用.Zoom = False而不是.Zoom = 50,則打印輸出表上的printarea會變得很小。如果我使用zoom = 50,我可以在左側和右側獲得這些英寸寬的邊距。我懷疑它不會處理實際的printarea行,但我不知道爲什麼其他命令行似乎工作得很好。我試圖將代碼剝離到非常多的printarea,fitTopagesxx,並得到同樣的問題。
我試着多次重寫代碼,並得到一個錯誤提示或與網上找到的其他代碼相同的結果。
Sub PrintJob()
Dim ws As Worksheet
Dim i As Long
Set ws = Sheets("Filtered_List")
For i = 2 To ws.Cells(Rows.Count, "F").End(xlUp).Row
If ws.Cells(i, "F").Value = 0 Then Exit For
With Sheets("Print_Page")
.Range("C8").Value = ws.Cells(i, "F").Value
Worksheets("Print_Page").PageSetup.PrintArea = "$C$2:$L$60"
Worksheets("Print_Page").PageSetup.Orientation = xlPortrait
Worksheets("Print_Page").PageSetup.Zoom = 50
Worksheets("Print_Page").PageSetup.FitToPagesWide = 1
Worksheets("Print_Page").PageSetup.FitToPagesTall = False
Worksheets("Print_Page").PageSetup.LeftMargin = Application.InchesToPoints(0)
Worksheets("Print_Page").PageSetup.RightMargin = Application.InchesToPoints(0)
Worksheets("Print_Page").PageSetup.TopMargin = Application.InchesToPoints(0)
Worksheets("Print_Page").PageSetup.BottomMargin = Application.InchesToPoints(0)
Worksheets("Print_Page").PageSetup.HeaderMargin = Application.InchesToPoints(0)
Worksheets("Print_Page").PageSetup.FooterMargin = Application.InchesToPoints(0)
.PrintOut
End With
Next i
End Sub
[更新]我發現了它是一個特定紙張錯誤後想通了這個問題一些幫助後在這裏。基本上,打印標題字段需要是空的,這確實是該代碼是這一個:
.PrintTitleRows = ""
.PrintTitleColumns = ""
我添加了幾行從Noldor130884的使用的清理代碼:
Sub PrintJob()
Dim ws As Worksheet
Dim i As Long
Set ws = Sheets("Filtered_List")
For i = 2 To ws.Cells(Rows.Count, "F").End(xlUp).Row
If ws.Cells(i, "F").Value = 0 Then Exit For
With Worksheets("Print_Page")
.Range("C8").Value = ws.Cells(i, "F").Value
With .PageSetup
.PrintArea = "$C$2:$L$60"
.Orientation = xlPortrait
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.PrintTitleRows = ""
.PrintTitleColumns = ""
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.PrintHeadings = False
.CenterHorizontally = True
.CenterVertically = False
.PaperSize = xlPaperLetter
End With
.PrintPreview
End With
Next i
End Sub
希望這節省了一些頭痛的問題。
我會檢查通過對頁面設置對話框中的值,以確保沒有什麼奇怪例如回事在頁眉和頁腳。 – Joffan
如果我通過使用ui直接從excel甚至宏/ vba區域打印其他東西,它看起來非常好。相當令人沮喪。 – FatTwin
真的很奇怪。我不認爲添加IgnorePrintAreas:= False會有幫助嗎?...另外我注意到您不使用With對象來設置PageSetup值,也許嘗試使用相同的方式.PrintOut?也就是說,有Worksheets(「Print_Page」)。PrintOut – Joffan