Excel 导出为 PDF - 使用是或否开关根据名称范围选择特定工作表

问题描述 投票:0回答:0

是否可以使用以 Y 或 N 作为开关的小命名范围指定要在工作簿中打印的特定工作表?

在工作簿中有一个“输入”工作表,允许人们选择将生成自定义报告的各种选项。 “输入”的一部分旨在允许人们通过选择 Y 或 N 来选择要包含在 PDF 中的工作表。工作簿中有许多工作表,用户可能希望将这些工作表导出到 PDF 文件中对应于“输入”工作表上小表中列出的报告页面,其命名范围为“Y_N_Print”,其中包含以下数据:

报告页 包括
输入 N
封面 Y
趋势 Y
Y
价差 Y

如果旁边有 Y 等,则将“封面”工作表包含在单个 PDF 文件中。

这是将工作表导出到 PDF 工作簿的当前代码,它确实有效,但必须在代码中手动维护,而不是通过在“Y_N_Print”命名范围中选择 Y 或 N:

子导出为 PDF() 将文件路径变暗为变体 Dim defaultFileName As String

defaultFileName = Range("File_Name").Value
filePath = Application.GetSaveAsFilename(InitialFileName:=defaultFileName, _
    FileFilter:="PDF Files (*.pdf), *.pdf", Title:="Save PDF As...")
If filePath = False Then Exit Sub
  
Sheets(Array("Cover", "Trend", "NIE")).Select 'Update the list of worksheet names here
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=filePath, _
    openafterpublish:=False, ignoreprintareas:=False

Sheets("Inputs").Activate
MsgBox "The PDF report has been successfully exported."

结束子

有没有办法自动更新这部分代码中的值以匹配旁边有 Y 的值? Sheets(Array("Cover", "Trend", "NIE")).Select

下面的代码在一定程度上起作用。它包含旁边带有 Y 的工作表,但似乎没有办法阻止它包含“输入”工作表。人们不太可能想要包括“输入”工作表。

子导出为 PDF() 将文件路径变暗为变体 昏暗的默认文件名作为字符串 调暗 sheetsToExport As Range 将 ws 调暗为工作表 将单元格调暗为范围

Set sheetsToExport = Range("Y_N_Print") '"Y_N_Print" is the named range

defaultFileName = Range("File_Name").Value
filePath = Application.GetSaveAsFilename(InitialFileName:=defaultFileName, _
    FileFilter:="PDF Files (*.pdf), *.pdf", Title:="Save PDF As...")
If filePath = "False" Then Exit Sub

For Each cell In sheetsToExport
    If UCase(cell.Offset(0, 1).Value) = "Y" Then ' Checks if the value in the second column is "Y"
        On Error Resume Next ' Ignore errors if worksheet name is not found
        Set ws = Worksheets(cell.Value) ' Get worksheet with name in the first column
        On Error GoTo 0 ' Reset error handling
        If Not ws Is Nothing Then ' If worksheet exists, select it
            ws.Select False
        End If
    End If
Next cell

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=filePath, _
    openafterpublish:=False, ignoreprintareas:=False

Sheets("Inputs").Activate
MsgBox "The PDF report has been successfully exported."

结束子

excel vba pdf-generation
© www.soinside.com 2019 - 2024. All rights reserved.