【问题标题】:VBA Excel export specified range of sheets to PDFVBA Excel 将指定范围的工作表导出为 PDF
【发布时间】:2021-03-24 10:48:23
【问题描述】:

我有几张位于最后的表格,我不想将它们包含在我的 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 打印中。

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

Specify an Excel range across sheets in VBA

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

其他方法:

vba print pdf files for specific list of sheets

Excel VBA Macro to save series of worksheets to one pdf then repeat for different series of worksheets

在我的情况下不工作

是否有任何更智能的选项可以选择某些范围的工作表/或排除某些工作表/用于 PDF 打印?

【问题讨论】:

  • 创建工作表列表及其关联范围的列表(如果它们不完全相同)。遍历列表并将范围适当地复制到另一个(新)工作表并将其导出到PDF。您已指定不包括的工作表列表。现在使用工作表及其相关范围,或者使用一个范围地址,如果它始终相同,并详细说明标题、单元格格式、空行等问题。
  • 我该怎么做?

标签: excel vba


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-01-12
    • 2021-08-20
    • 2016-08-04
    • 2021-04-22
    • 2023-03-25
    • 2014-03-05
    • 2017-11-09
    • 2017-11-07
    • 2020-06-27
    相关资源
    最近更新 更多