如何在我的全双工打印机上打印多张Excel(XL)表? (双面打印输出)

时间:2014-05-11 11:14:24

标签: excel vba excel-vba

我有问题。我有一个大的XL工作簿,它生成两个输出'页面',我用它来进行日常规划。一个输出页面有三个月的日历,待办事项列表和每日计划。第二个输出页面有一个非常方便的方式来跟踪每日笔记和设计草图。不幸的是,工作簿有四个工作表,两个用于管理内容的工作表和两个用于格式化输出的工作表。哦,作为参考,工作表开始作为Vertex42文档..我已经对工作簿进行了大量更新,特别是添加了第2页。

绝对关键的是输出纸张最终会放在一张纸的两面。

普通XL打印控件允许三种基本选项:您可以打印1)选择区域,或2)单张纸张或3)打印整个工作簿。我知道我可以单独使用宏来打印输出页,但只使用双面打印机上的纸张的一面。如何在工作簿中打印出四个工作表中的两个,以使页面最终位于一张纸的两面?

My current macro:
Sub PrintMultipleDays()

Dim theStartDate As Date
Dim theEndDate As Date
Dim i, d As Integer
Dim daysToPrint As Integer

theStartDate = Range("theDate").Value
theEndDate = Range("endDate").Value 
daysToPrint = theEndDate - theStartDate

Dim msg As String
msg = "Print " & daysToPrint + 1 & " Days?" & Chr(10) & theStartDate & " To " & theEndDate
If (MsgBox(msg, vbYesNo, "Print Multiple Days?") = vbYes) Then
    ' continue
Else
    Exit Sub
End If

For i = 0 To daysToPrint Step 1
    Range("theDate").Value = theStartDate + i
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Sheets("Page2").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
    Sheets("Page1").Select
Next i

'Reset
Range("theDate").Value = theStartDate

End Sub

注意:通常我喜欢一次打印大约四页(即8页输出页,四页纸...)我一直在使用pdf打印机工具并附加输出文件以生成单个页面(8页面长)pdf文件,但该工具不再有效。我需要找到一个更好的解决方案。关于这个宏的mods的任何想法??

或者我只是放弃整个XL的东西,在html5画布或SVG或JavaScriptPDF库中执行此操作并在线进行以便所有人分享善意? (这要花几个小时?呃。)我会说,jsPDF似乎是一个非常棒的工具,但重现一些这样的功能将会有很多工作。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

基本上,您可以在按住CTRL的同时单击鼠标来选择两张或更多张(如果纸张是连续的,则可以移动)。然后,您可以在一个打印作业中一起打印所有这些。这也可以在VBA中使用Array作为Sheets集合的参数:

Sheets(Array("sheet1", "sheet2"). PrintOut Copies:=1, Collate:=True