簡體   English   中英

將多個范圍和工作表打印到一個PDF文件

[英]Printing multiple ranges and worksheets to one PDF file

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

  1. 打印出特定的工作表和范圍,以便單個PDF文件。
  2. 將PDF文件另存為特定文件夾的特定日期。

我遇到的障礙是將大量的紙張和范圍打印成一個PDF文件,因為目前每個工作表或范圍都打印到它自己的單個PDF文件。

我假設有一種方法可以將所有必要的工作表和范圍放在類似於數組的內容中,然后對該變量執行.PrintOut,但是我沒有讓它工作。

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

如何將單個范圍和工作表打印到單個.pdf?

要打印多個工作表,可以將工作表名稱放在這樣的數組中

Sub PrintArrayOfWorksheets()

    Dim vaWorksheets As Variant

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

    ThisWorkbook.Worksheets(vaWorksheets).PrintOut

End Sub

打印到PDF有特殊問題。 如果您使用“官方”插件來創建PDF,它可能會如上所述(抱歉,我現在無法嘗試)。 過去當我使用其他打印到PDF的打印機驅動程序時,我發現所有(或至少大多數)PageSetup屬性必須在工作表上相同,否則它將在多個作業中打印。 這意味着沒有縮小到適合,所有邊距必須相同。 我不記得導致問題的所有屬性,只是那兩個肯定做了,而Orientation肯定沒有。

要限制打印范圍,您需要在每張紙上設置打印區域。 您可以使用PageSetup.PrintArea屬性在代碼中執行此操作。 但是如果不改變,那么手動做一次也可能就好了,它會持續存在。

見下面的代碼。 這用於使用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

Excel 2010具有print to pdf功能。 如果您的每個工作表都設置為打印所需的信息,則突出顯示要打印到一個pdf文件的各種工作表,然后轉到“文件”和“另存為”並選擇另存為“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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM