0

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

  1. 打印出特定的工作表和范围以生成单个 PDF 文件。
  2. 将 PDF 文件作为特定日期保存到特定文件夹。

我遇到的障碍是将大量工作表和范围打印到一个 PDF 文件中,因为目前每个工作表或范围都打印到自己的单个 PDF 文件中。

我假设有一种方法可以将所有必要的工作表和范围放入数组之类的东西中,然后对该变量执行 .PrintOut ,但是我还没有让它工作。

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

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

4

4 回答 4

1

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

Sub PrintArrayOfWorksheets()

    Dim vaWorksheets As Variant

    vaWorksheets = Array("Sheet1", "Sheet2", "Sheet3")

    ThisWorkbook.Worksheets(vaWorksheets).PrintOut

End Sub

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

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

于 2012-07-17T19:41:25.303 回答
1

请参阅下面的代码。这用于使用 VBA 按钮以自定义顺序打印多张纸。它打印到单击按钮之前选择的任何打印机。

本质上,它所做的是选择您想要的工作表并在工作簿的末尾重新排列它们,然后打印它们。打印后将它们重新排序为原始顺序。

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
于 2015-10-08T20:22:28.383 回答
0

这是我尝试过的一种方法……我将工作表打印到 PS 文件中,然后双击 PS 文件以生成 PDF。我知道这是一种解决方法,但打印到 PS 速度很快。它要求您在 PC 上安装 Adob​​e 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
于 2013-09-04T13:10:15.310 回答
0

Excel 2010 具有打印到 pdf 的功能。如果您的每个工作表都设置为打印您想要的信息,然后突出显示要打印到一个 pdf 文件的各种工作表,然后转到“文件”和“另存为”并选择另存为类型“pdf” . 它应该打印您突出显示的工作表,因为您为每个工作表设置了打印。

于 2013-07-02T18:13:02.317 回答