我在Excel中有一個工作表,其中包含多個頁面。我想打印選定的頁面,例如第1頁,第3頁,第4頁和第6頁。我可以在singel打印工作中做到這一點嗎?使用VBA宏打印Excel工作表中的選定頁面
在知道我可以用下面的命令打印的頁數: 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
不過這樣一來,我創造了很多的打印作業。因此,我期待像類似 打印輸出(第1頁,第3頁,第4頁,....)
更多信息關於我的問題: 有我的工作表一個送貨單:Excel delivery notes 他們中的一些沒有C欄中的條目。 (例如第2頁)。我寫了萬客隆它迭代的pagebreakes,檢查每一頁上的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來打印相關頁面?
感謝您的幫助!
據我所知,您可以對錶單執行此操作,但不能處理頁面,因爲打印輸出中沒有處理頁面數組的屬性,而不是序列。一個技巧是將頁面移動到工作表,然後嘗試打印選中的工作表,並將其保存在數組中:'ThisWorkbook.Worksheets(PrintCollection).PrintOut'其中PrintCollection是一組工作表 – Ibo
是的,我發現了幾種方法用於打印收集表格。 複製解決方案似乎非常煩人,但我會試試這個。 謝謝。 – Hannes