繁体   English   中英

VBA Excel 导出指定范围的图纸到 PDF

[英]VBA Excel export specified range of sheets to PDF

我在最后有几张纸,我不想将它们包含在我的 PDF 打印中。

我的代码有效,但看起来很困难......

 Sub DPPtoPDF()

 Sheets("Readme").Visible = False
 Sheets("Asbuilt Photos 1").Visible = False
 Sheets("Asbuilt Photos 2").Visible = False
 Sheets("Splicing Photos").Visible = False
 Sheets("Sign Off Sheet").Visible = False
 Sheets("OTDR TRACE-1").Visible = False

 ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ThisWorkbook.Path & "\" & ThisWorkbook.Name, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=True

 Sheets("Readme").Visible = True
 Sheets("Asbuilt Photos 1").Visible = True
 Sheets("Asbuilt Photos 2").Visible = True
 Sheets("Splicing Photos").Visible = True
 Sheets("Sign Off Sheet").Visible = True
 Sheets("OTDR TRACE-1").Visible = True
 Sheets("Frontsheet").Select


 End Sub

基本上我想定义一些工作表范围,我想将其包含在我的 PDF 打印中。

不幸的是,根据以下线程:

在 VBA 中跨工作表指定 Excel 范围

看起来我只能在一张纸内设置范围。

其他方法:

vba 打印 pdf 文件以获取特定的工作表列表

Excel VBA 宏将一系列工作表保存到一个 pdf 然后重复不同系列的工作表

在我的情况下不起作用

在此处输入图像描述

对于 select 某些范围的纸张/或排除某些纸张/用于 PDF 打印,是否有任何更智能的选项?

添加一个临时表来保存您要打印的所有范围。

Option Explicit

Sub DPPtoPDF()

    'Define ranges to print out
    Dim wb As Workbook
    Dim wsPDF As Worksheet, ws As Worksheet
    Dim rngPDF As Range
    Dim n As Long, i As Integer
   
    ' define ranges
    Dim rngToPrint(2) As Range
    Set wb = ThisWorkbook
    Set rngToPrint(1) = wb.Sheets("Sheet1").Range("A1:E5")
    Set rngToPrint(2) = wb.Sheets("Sheet2").Range("C3:F200")

    Set wb = ThisWorkbook
    ' create sheet to hold ranges
    Set wsPDF = wb.Sheets.Add
    wsPDF.Name = "PDF Output"
    Set rngPDF = wsPDF.Range("A1")
  
    ' copy range to temporary sheet
    For i = 1 To UBound(rngToPrint)
        n = rngToPrint(i).Rows.Count
        rngToPrint(i).Copy rngPDF
        Set rngPDF = rngPDF.Offset(n + 1)
    Next

    ' print to PDF
    wsPDF.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      ThisWorkbook.Path & "\" & ThisWorkbook.Name, _
      Quality:=xlQualityStandard, IncludeDocProperties:=True, _
      IgnorePrintAreas:=False, OpenAfterPublish:=True

    ' delete temporary sheet
    Application.DisplayAlerts = False
    wsPDF.Delete
    Application.DisplayAlerts = True

 End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM