将多个范围和工作表打印到一个PDF文件

我有一个工作表,经常需要打印工作表和范围的特定顺序。 我想要做的是

  1. 打印出特定的工作表和范围为了一个PDF文件。
  2. 将PDF文件作为特定date保存到某个文件夹。

我遇到的障碍是将众多的纸张和范围打印到一个PDF文件中,因为当前每个工作表或范围都打印到它自己的单个PDF文件中。

我假设有一种方法可以将所有必要的表单和范围放在数组中,然后对该variables执行一个.PrintOut,但是我没有得到这个工作。

我正在使用Excel 2010,所以我只使用“Adobe PDF”打印机。

如何将多个范围和工作表打印到一个.pdf?

要打印多个工作表,可以将工作表名称放在一个这样的数组中

Sub PrintArrayOfWorksheets() Dim vaWorksheets As Variant vaWorksheets = Array("Sheet1", "Sheet2", "Sheet3") ThisWorkbook.Worksheets(vaWorksheets).PrintOut End Sub 

打印到PDF有特殊的问题。 如果您使用“官方”插件来创buildPDF,它可能会像上面那样工作(抱歉,我现在不能尝试)。 在过去,当我使用打印到PDF的其他打印机驱动程序时,发现所有(或至less大部分)PageSetup属性必须在工作表上相同,否则将在多个作业中打印。 这意味着不缩水,所有的边际必须是相同的。 我不记得所有引起问题的属性,只是那两个确实做了,而且定位肯定没有。

要限制打印的范围,您需要在每张纸上设置打印区域。 您可以使用PageSetup.PrintArea属性在代码中执行此操作。 但是,如果不改变,那么手动进行一次也可能会持续下去。

看下面的代码。 这用于使用VBAbutton以自定义顺序打印多个工作表。 它会在点击button之前打印到所select的打印机上。

实质上,它所做的是select所需的工作表,然后在工作簿的末尾重新排列这些工作表,然后将其打印出来。 打印后重新排列它们到原来的顺序。

 Option Explicit Private Sub Print_Sheets_InOrder_Click() Dim ary Dim orig() As String Dim a As Variant, fp As String, i As Variant ary = Array("Sheet1", "Sheet4", "Sheet3") fp = ActiveWorkbook.Path ReDim orig(1 To Sheets.Count) For i = 1 To Sheets.Count orig(i) = Sheets(i).Name Next i For Each a In ary Sheets(a).Move after:=Sheets(Sheets.Count) Next a ThisWorkbook.Worksheets(ary).PrintOut For Each a In orig Sheets(a).Move after:=Sheets(Sheets.Count) Next a End Sub 

Excel 2010有一个打印到PDFfunction。 如果您的每个工作表都设置为打印所需的信息,然后突出显示您要打印到一个PDF文件的各种工作表,然后转到“文件”和“另存为”,然后select保存为types“pdf” 。 它应该打印您突出显示的工作表,因为您已经为每个工作表设置了打印。

这里是我尝试过的方法…我将工作表打印到PS文件,然后双击PS文件生成PDF。 我知道这是一个解决方法,但打印到PS是闪电般的。 它要求您在PC上安装Adobe Acrobat。

 Dim GetPath, SavePath, ReportSuffix GetPath = ActiveWorkbook.Path & "\" ReportSuffix = Range("ReportName").Text & ".ps" SavePath = GetPath & ReportSuffix Dim PrintSheets PrintSheets = Array("Exec1", "Intro1", "Intro2", "Intro3", "Intro4", "Intro5") Sheets(PrintSheets).PrintOut Copies:=1, PrintTofile:=True, PrToFileName:=SavePath