[英]Printing selected pages in Excel Worksheet with VBA macro
我在Excel中有一个包含多个页面的工作表。 我想打印选定的页面,eG页面1,页面3,页面4和页面6.我可以在单个打印作业中执行此操作吗?
知道我可以使用以下命令打印页面: ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, Collate:=True ActiveSheet.PrintOut From:=1, To:=3, Copies:=3, Collate:=True ActiveSheet.PrintOut From:=1, To:=4, Copies:=4, Collate:=True ActiveSheet.PrintOut From:=1, To:=6, Copies:=6, Collate:=True
但是这样,我创造了很多打印作业。 因此我看起来像PrintOut(Page1,Page 3,Page 4,....)
有关我的问题的更多信息:我的工作表中有一个交付说明: Excel交付说明其中一些在C列中没有条目。 (例如第2页)。 我写了一个Makro,它遍历分页符并检查每个页面上的C列:
Option Explicit
Sub LieferscheineDrucken()
Dim HPB As HPageBreak
Dim breakAdress As Integer
Dim pageNumber As Integer
Dim productNumber As Integer
Dim printCondition As Boolean
pageNumber = 1
printCondition = False
'Drucke Seite 1
For productNumber = 10 To 61
ActiveSheet.Cells(productNumber, "C").Select
If ActiveSheet.Cells(productNumber, "C").Value <> "" Then
printCondition = True
End If
Next
If printCondition = True Then
ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, Collate:=True
End If
printCondition = False
pageNumber = pageNumber + 1
'Drucken der restlichen Seiten
For Each HPB In ActiveSheet.HPageBreaks
breakAdress = CInt(Mid(HPB.Location.Address, 4, 5))
'Teste, ob Lieferschein Einträge enthält
For productNumber = (breakAdress + 9) To (breakAdress + 60)
If ActiveSheet.Cells(productNumber, "C").Value <> "" Then
printCondition = True
End If
Next
If printCondition = True Then
ActiveSheet.PrintOut From:=pageNumber, To:=pageNumber, Copies:=1, Collate:=True
End If
pageNumber = pageNumber + 1
printCondition = False
Next
End Sub
但是这个宏为每个页面发送了一个printjob。 如何通过仅发送一个printjob来打印相关页面?
谢谢你的帮助!
代码就是这样的。
Sub test()
Dim Ws As Worksheet
Dim hp As HPageBreak
Dim vAddress()
Dim i As Long
Set Ws = ActiveSheet
n = Ws.HPageBreaks.Count
For i = 0 To n
ReDim Preserve vAddress(i)
If i = 0 Then
vAddress(i) = Ws.Range("a1").Address
Else
vAddress(i) = Ws.HPageBreaks(i).Location.Address
End If
Set rngDB = Ws.Range(vAddress(i)).Range("c5").Resize(21) 'Range("c5").Resize (21) is coumn C date range
If WorksheetFunction.CountA(rngDB) Then
Ws.PrintOut from:=i + 1, To:=i + 1, preview:=True
End If
Next i
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.